Commit c680dc2e35f79cdd854105b54d6a4f326c4ea267

Authored by YunaiV
1 parent a297b060

feat(mes): 新增车间管理、工位管理模块后端

新增车间(workshop)和工位(workstation)5 张表的完整后端实现:
- DDL 建表 + 菜单 SQL + 螺丝刀工厂演示数据 21 条
- DO/Mapper/Service/VO/Controller 共 37 个 Java 文件
- 工位支持设备、工具、人员三类子资源的 CRUD
Showing 37 changed files with 1752 additions and 0 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/MesMdWorkshopController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
  4 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  5 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  6 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
  7 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  8 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  9 +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
  10 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.workshop.MesMdWorkshopPageReqVO;
  11 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.workshop.MesMdWorkshopRespVO;
  12 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.workshop.MesMdWorkshopSaveReqVO;
  13 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkshopDO;
  14 +import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkshopService;
  15 +import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
  16 +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
  17 +import io.swagger.v3.oas.annotations.Operation;
  18 +import io.swagger.v3.oas.annotations.Parameter;
  19 +import io.swagger.v3.oas.annotations.tags.Tag;
  20 +import jakarta.annotation.Resource;
  21 +import jakarta.servlet.http.HttpServletResponse;
  22 +import jakarta.validation.Valid;
  23 +import org.springframework.security.access.prepost.PreAuthorize;
  24 +import org.springframework.validation.annotation.Validated;
  25 +import org.springframework.web.bind.annotation.*;
  26 +
  27 +import java.io.IOException;
  28 +import java.util.List;
  29 +import java.util.Map;
  30 +
  31 +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
  32 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  33 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
  34 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
  35 +import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
  36 +
  37 +@Tag(name = "管理后台 - MES 车间")
  38 +@RestController
  39 +@RequestMapping("/mes/md-workshop")
  40 +@Validated
  41 +public class MesMdWorkshopController {
  42 +
  43 + @Resource
  44 + private MesMdWorkshopService workshopService;
  45 +
  46 + @Resource
  47 + private AdminUserApi adminUserApi;
  48 +
  49 + @PostMapping("/create")
  50 + @Operation(summary = "创建车间")
  51 + @PreAuthorize("@ss.hasPermission('mes:md-workshop:create')")
  52 + public CommonResult<Long> createWorkshop(@Valid @RequestBody MesMdWorkshopSaveReqVO createReqVO) {
  53 + return success(workshopService.createWorkshop(createReqVO));
  54 + }
  55 +
  56 + @PutMapping("/update")
  57 + @Operation(summary = "更新车间")
  58 + @PreAuthorize("@ss.hasPermission('mes:md-workshop:update')")
  59 + public CommonResult<Boolean> updateWorkshop(@Valid @RequestBody MesMdWorkshopSaveReqVO updateReqVO) {
  60 + workshopService.updateWorkshop(updateReqVO);
  61 + return success(true);
  62 + }
  63 +
  64 + @DeleteMapping("/delete")
  65 + @Operation(summary = "删除车间")
  66 + @Parameter(name = "id", description = "编号", required = true)
  67 + @PreAuthorize("@ss.hasPermission('mes:md-workshop:delete')")
  68 + public CommonResult<Boolean> deleteWorkshop(@RequestParam("id") Long id) {
  69 + workshopService.deleteWorkshop(id);
  70 + return success(true);
  71 + }
  72 +
  73 + @GetMapping("/get")
  74 + @Operation(summary = "获得车间")
  75 + @Parameter(name = "id", description = "编号", required = true, example = "1024")
  76 + @PreAuthorize("@ss.hasPermission('mes:md-workshop:query')")
  77 + public CommonResult<MesMdWorkshopRespVO> getWorkshop(@RequestParam("id") Long id) {
  78 + MesMdWorkshopDO workshop = workshopService.getWorkshop(id);
  79 + MesMdWorkshopRespVO respVO = BeanUtils.toBean(workshop, MesMdWorkshopRespVO.class);
  80 + if (respVO != null && respVO.getChargeUserId() != null) {
  81 + AdminUserRespDTO user = adminUserApi.getUser(respVO.getChargeUserId());
  82 + if (user != null) {
  83 + respVO.setChargeUserName(user.getNickname());
  84 + }
  85 + }
  86 + return success(respVO);
  87 + }
  88 +
  89 + @GetMapping("/page")
  90 + @Operation(summary = "获得车间分页")
  91 + @PreAuthorize("@ss.hasPermission('mes:md-workshop:query')")
  92 + public CommonResult<PageResult<MesMdWorkshopRespVO>> getWorkshopPage(@Valid MesMdWorkshopPageReqVO pageReqVO) {
  93 + PageResult<MesMdWorkshopDO> pageResult = workshopService.getWorkshopPage(pageReqVO);
  94 + PageResult<MesMdWorkshopRespVO> voPageResult = BeanUtils.toBean(pageResult, MesMdWorkshopRespVO.class);
  95 + // 拼装负责人名称
  96 + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
  97 + convertSet(voPageResult.getList(), MesMdWorkshopRespVO::getChargeUserId));
  98 + voPageResult.getList().forEach(vo -> findAndThen(userMap, vo.getChargeUserId(),
  99 + user -> vo.setChargeUserName(user.getNickname())));
  100 + return success(voPageResult);
  101 + }
  102 +
  103 + @GetMapping("/simple-list")
  104 + @Operation(summary = "获得车间精简列表", description = "只包含被开启的车间,主要用于前端的下拉选项")
  105 + public CommonResult<List<MesMdWorkshopRespVO>> getWorkshopSimpleList() {
  106 + List<MesMdWorkshopDO> list = workshopService.getWorkshopListByStatus(CommonStatusEnum.ENABLE.getStatus());
  107 + return success(convertList(list, workshop -> new MesMdWorkshopRespVO()
  108 + .setId(workshop.getId()).setName(workshop.getName()).setCode(workshop.getCode())));
  109 + }
  110 +
  111 + @GetMapping("/export-excel")
  112 + @Operation(summary = "导出车间 Excel")
  113 + @PreAuthorize("@ss.hasPermission('mes:md-workshop:export')")
  114 + @ApiAccessLog(operateType = EXPORT)
  115 + public void exportWorkshopExcel(@Valid MesMdWorkshopPageReqVO pageReqVO,
  116 + HttpServletResponse response) throws IOException {
  117 + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  118 + List<MesMdWorkshopDO> list = workshopService.getWorkshopPage(pageReqVO).getList();
  119 + // TODO @AI:导出是不是也要拼接关联字段?
  120 + ExcelUtils.write(response, "车间.xls", "数据", MesMdWorkshopRespVO.class,
  121 + BeanUtils.toBean(list, MesMdWorkshopRespVO.class));
  122 + }
  123 +
  124 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/MesMdWorkstationController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
  4 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  5 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  6 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
  7 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  8 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  9 +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
  10 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorkstationPageReqVO;
  11 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorkstationRespVO;
  12 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorkstationSaveReqVO;
  13 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkshopDO;
  14 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
  15 +import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkshopService;
  16 +import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
  17 +import io.swagger.v3.oas.annotations.Operation;
  18 +import io.swagger.v3.oas.annotations.Parameter;
  19 +import io.swagger.v3.oas.annotations.tags.Tag;
  20 +import jakarta.annotation.Resource;
  21 +import jakarta.servlet.http.HttpServletResponse;
  22 +import jakarta.validation.Valid;
  23 +import org.springframework.security.access.prepost.PreAuthorize;
  24 +import org.springframework.validation.annotation.Validated;
  25 +import org.springframework.web.bind.annotation.*;
  26 +
  27 +import java.io.IOException;
  28 +import java.util.List;
  29 +import java.util.Map;
  30 +
  31 +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
  32 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  33 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
  34 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
  35 +import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
  36 +
  37 +@Tag(name = "管理后台 - MES 工位")
  38 +@RestController
  39 +@RequestMapping("/mes/md-workstation")
  40 +@Validated
  41 +public class MesMdWorkstationController {
  42 +
  43 + @Resource
  44 + private MesMdWorkstationService workstationService;
  45 +
  46 + @Resource
  47 + private MesMdWorkshopService workshopService;
  48 +
  49 + @PostMapping("/create")
  50 + @Operation(summary = "创建工位")
  51 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:create')")
  52 + public CommonResult<Long> createWorkstation(@Valid @RequestBody MesMdWorkstationSaveReqVO createReqVO) {
  53 + return success(workstationService.createWorkstation(createReqVO));
  54 + }
  55 +
  56 + @PutMapping("/update")
  57 + @Operation(summary = "更新工位")
  58 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:update')")
  59 + public CommonResult<Boolean> updateWorkstation(@Valid @RequestBody MesMdWorkstationSaveReqVO updateReqVO) {
  60 + workstationService.updateWorkstation(updateReqVO);
  61 + return success(true);
  62 + }
  63 +
  64 + @DeleteMapping("/delete")
  65 + @Operation(summary = "删除工位")
  66 + @Parameter(name = "id", description = "编号", required = true)
  67 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:delete')")
  68 + public CommonResult<Boolean> deleteWorkstation(@RequestParam("id") Long id) {
  69 + workstationService.deleteWorkstation(id);
  70 + return success(true);
  71 + }
  72 +
  73 + @GetMapping("/get")
  74 + @Operation(summary = "获得工位")
  75 + @Parameter(name = "id", description = "编号", required = true, example = "1024")
  76 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:query')")
  77 + public CommonResult<MesMdWorkstationRespVO> getWorkstation(@RequestParam("id") Long id) {
  78 + MesMdWorkstationDO workstation = workstationService.getWorkstation(id);
  79 + MesMdWorkstationRespVO respVO = BeanUtils.toBean(workstation, MesMdWorkstationRespVO.class);
  80 + if (respVO != null && respVO.getWorkshopId() != null) {
  81 + MesMdWorkshopDO workshop = workshopService.getWorkshop(respVO.getWorkshopId());
  82 + if (workshop != null) {
  83 + respVO.setWorkshopName(workshop.getName());
  84 + }
  85 + }
  86 + return success(respVO);
  87 + }
  88 +
  89 + @GetMapping("/page")
  90 + @Operation(summary = "获得工位分页")
  91 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:query')")
  92 + public CommonResult<PageResult<MesMdWorkstationRespVO>> getWorkstationPage(@Valid MesMdWorkstationPageReqVO pageReqVO) {
  93 + PageResult<MesMdWorkstationDO> pageResult = workstationService.getWorkstationPage(pageReqVO);
  94 + PageResult<MesMdWorkstationRespVO> voPageResult = BeanUtils.toBean(pageResult, MesMdWorkstationRespVO.class);
  95 + // 拼装车间名称
  96 + Map<Long, MesMdWorkshopDO> workshopMap = cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap(
  97 + workshopService.getWorkshopListByStatus(null),
  98 + MesMdWorkshopDO::getId);
  99 + voPageResult.getList().forEach(vo -> findAndThen(workshopMap, vo.getWorkshopId(),
  100 + workshop -> vo.setWorkshopName(workshop.getName())));
  101 + return success(voPageResult);
  102 + }
  103 +
  104 + @GetMapping("/simple-list")
  105 + @Operation(summary = "获得工位精简列表", description = "只包含被开启的工位,主要用于前端的下拉选项")
  106 + public CommonResult<List<MesMdWorkstationRespVO>> getWorkstationSimpleList() {
  107 + List<MesMdWorkstationDO> list = workstationService.getWorkstationListByStatus(CommonStatusEnum.ENABLE.getStatus());
  108 + return success(convertList(list, ws -> new MesMdWorkstationRespVO()
  109 + .setId(ws.getId()).setName(ws.getName()).setCode(ws.getCode())));
  110 + }
  111 +
  112 + @GetMapping("/export-excel")
  113 + @Operation(summary = "导出工位 Excel")
  114 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:export')")
  115 + @ApiAccessLog(operateType = EXPORT)
  116 + public void exportWorkstationExcel(@Valid MesMdWorkstationPageReqVO pageReqVO,
  117 + HttpServletResponse response) throws IOException {
  118 + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  119 + // TODO @AI:导出是不是也要处理下关联字段?比如车间名称。
  120 + List<MesMdWorkstationDO> list = workstationService.getWorkstationPage(pageReqVO).getList();
  121 + ExcelUtils.write(response, "工位.xls", "数据", MesMdWorkstationRespVO.class,
  122 + BeanUtils.toBean(list, MesMdWorkstationRespVO.class));
  123 + }
  124 +
  125 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/MesMdWorkstationMachineController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  5 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorkstationMachineRespVO;
  6 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorkstationMachineSaveReqVO;
  7 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationMachineDO;
  8 +import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationMachineService;
  9 +import io.swagger.v3.oas.annotations.Operation;
  10 +import io.swagger.v3.oas.annotations.Parameter;
  11 +import io.swagger.v3.oas.annotations.tags.Tag;
  12 +import jakarta.annotation.Resource;
  13 +import jakarta.validation.Valid;
  14 +import org.springframework.security.access.prepost.PreAuthorize;
  15 +import org.springframework.validation.annotation.Validated;
  16 +import org.springframework.web.bind.annotation.*;
  17 +
  18 +import java.util.List;
  19 +
  20 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  21 +
  22 +@Tag(name = "管理后台 - MES 工位设备")
  23 +@RestController
  24 +@RequestMapping("/mes/md-workstation-machine")
  25 +@Validated
  26 +public class MesMdWorkstationMachineController {
  27 +
  28 + @Resource
  29 + private MesMdWorkstationMachineService workstationMachineService;
  30 +
  31 + @PostMapping("/create")
  32 + @Operation(summary = "创建工位设备")
  33 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:update')")
  34 + public CommonResult<Long> createWorkstationMachine(@Valid @RequestBody MesMdWorkstationMachineSaveReqVO createReqVO) {
  35 + return success(workstationMachineService.createWorkstationMachine(createReqVO));
  36 + }
  37 +
  38 + @DeleteMapping("/delete")
  39 + @Operation(summary = "删除工位设备")
  40 + @Parameter(name = "id", description = "编号", required = true)
  41 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:update')")
  42 + public CommonResult<Boolean> deleteWorkstationMachine(@RequestParam("id") Long id) {
  43 + workstationMachineService.deleteWorkstationMachine(id);
  44 + return success(true);
  45 + }
  46 +
  47 + @GetMapping("/list-by-workstation")
  48 + @Operation(summary = "获得工位设备列表")
  49 + @Parameter(name = "workstationId", description = "工位编号", required = true)
  50 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:query')")
  51 + public CommonResult<List<MesMdWorkstationMachineRespVO>> getWorkstationMachineList(
  52 + @RequestParam("workstationId") Long workstationId) {
  53 + List<MesMdWorkstationMachineDO> list = workstationMachineService.getWorkstationMachineListByWorkstationId(workstationId);
  54 + // TODO @芋艿:拼装设备编码/名称,等 DV 设备模块完成后对接
  55 + return success(BeanUtils.toBean(list, MesMdWorkstationMachineRespVO.class));
  56 + }
  57 +
  58 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/MesMdWorkstationToolController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  5 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.tool.MesMdWorkstationToolRespVO;
  6 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.tool.MesMdWorkstationToolSaveReqVO;
  7 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationToolDO;
  8 +import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationToolService;
  9 +import io.swagger.v3.oas.annotations.Operation;
  10 +import io.swagger.v3.oas.annotations.Parameter;
  11 +import io.swagger.v3.oas.annotations.tags.Tag;
  12 +import jakarta.annotation.Resource;
  13 +import jakarta.validation.Valid;
  14 +import org.springframework.security.access.prepost.PreAuthorize;
  15 +import org.springframework.validation.annotation.Validated;
  16 +import org.springframework.web.bind.annotation.*;
  17 +
  18 +import java.util.List;
  19 +
  20 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  21 +
  22 +@Tag(name = "管理后台 - MES 工位工具")
  23 +@RestController
  24 +@RequestMapping("/mes/md-workstation-tool")
  25 +@Validated
  26 +public class MesMdWorkstationToolController {
  27 +
  28 + @Resource
  29 + private MesMdWorkstationToolService workstationToolService;
  30 +
  31 + @PostMapping("/create")
  32 + @Operation(summary = "创建工位工具")
  33 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:update')")
  34 + public CommonResult<Long> createWorkstationTool(@Valid @RequestBody MesMdWorkstationToolSaveReqVO createReqVO) {
  35 + return success(workstationToolService.createWorkstationTool(createReqVO));
  36 + }
  37 +
  38 + @PutMapping("/update")
  39 + @Operation(summary = "更新工位工具")
  40 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:update')")
  41 + public CommonResult<Boolean> updateWorkstationTool(@Valid @RequestBody MesMdWorkstationToolSaveReqVO updateReqVO) {
  42 + workstationToolService.updateWorkstationTool(updateReqVO);
  43 + return success(true);
  44 + }
  45 +
  46 + @DeleteMapping("/delete")
  47 + @Operation(summary = "删除工位工具")
  48 + @Parameter(name = "id", description = "编号", required = true)
  49 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:update')")
  50 + public CommonResult<Boolean> deleteWorkstationTool(@RequestParam("id") Long id) {
  51 + workstationToolService.deleteWorkstationTool(id);
  52 + return success(true);
  53 + }
  54 +
  55 + @GetMapping("/list-by-workstation")
  56 + @Operation(summary = "获得工位工具列表")
  57 + @Parameter(name = "workstationId", description = "工位编号", required = true)
  58 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:query')")
  59 + public CommonResult<List<MesMdWorkstationToolRespVO>> getWorkstationToolList(
  60 + @RequestParam("workstationId") Long workstationId) {
  61 + List<MesMdWorkstationToolDO> list = workstationToolService.getWorkstationToolListByWorkstationId(workstationId);
  62 + // TODO @芋艿:拼装工具类型名称,等 TM 工具模块完成后对接
  63 + return success(BeanUtils.toBean(list, MesMdWorkstationToolRespVO.class));
  64 + }
  65 +
  66 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/MesMdWorkstationWorkerController.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  5 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.worker.MesMdWorkstationWorkerRespVO;
  6 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.worker.MesMdWorkstationWorkerSaveReqVO;
  7 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationWorkerDO;
  8 +import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationWorkerService;
  9 +import io.swagger.v3.oas.annotations.Operation;
  10 +import io.swagger.v3.oas.annotations.Parameter;
  11 +import io.swagger.v3.oas.annotations.tags.Tag;
  12 +import jakarta.annotation.Resource;
  13 +import jakarta.validation.Valid;
  14 +import org.springframework.security.access.prepost.PreAuthorize;
  15 +import org.springframework.validation.annotation.Validated;
  16 +import org.springframework.web.bind.annotation.*;
  17 +
  18 +import java.util.List;
  19 +
  20 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
  21 +
  22 +@Tag(name = "管理后台 - MES 工位人员")
  23 +@RestController
  24 +@RequestMapping("/mes/md-workstation-worker")
  25 +@Validated
  26 +public class MesMdWorkstationWorkerController {
  27 +
  28 + @Resource
  29 + private MesMdWorkstationWorkerService workstationWorkerService;
  30 +
  31 + @PostMapping("/create")
  32 + @Operation(summary = "创建工位人员")
  33 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:update')")
  34 + public CommonResult<Long> createWorkstationWorker(@Valid @RequestBody MesMdWorkstationWorkerSaveReqVO createReqVO) {
  35 + return success(workstationWorkerService.createWorkstationWorker(createReqVO));
  36 + }
  37 +
  38 + @PutMapping("/update")
  39 + @Operation(summary = "更新工位人员")
  40 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:update')")
  41 + public CommonResult<Boolean> updateWorkstationWorker(@Valid @RequestBody MesMdWorkstationWorkerSaveReqVO updateReqVO) {
  42 + workstationWorkerService.updateWorkstationWorker(updateReqVO);
  43 + return success(true);
  44 + }
  45 +
  46 + @DeleteMapping("/delete")
  47 + @Operation(summary = "删除工位人员")
  48 + @Parameter(name = "id", description = "编号", required = true)
  49 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:update')")
  50 + public CommonResult<Boolean> deleteWorkstationWorker(@RequestParam("id") Long id) {
  51 + workstationWorkerService.deleteWorkstationWorker(id);
  52 + return success(true);
  53 + }
  54 +
  55 + @GetMapping("/list-by-workstation")
  56 + @Operation(summary = "获得工位人员列表")
  57 + @Parameter(name = "workstationId", description = "工位编号", required = true)
  58 + @PreAuthorize("@ss.hasPermission('mes:md-workstation:query')")
  59 + public CommonResult<List<MesMdWorkstationWorkerRespVO>> getWorkstationWorkerList(
  60 + @RequestParam("workstationId") Long workstationId) {
  61 + List<MesMdWorkstationWorkerDO> list = workstationWorkerService.getWorkstationWorkerListByWorkstationId(workstationId);
  62 + // TODO @芋艿:拼装岗位名称,等前端从 system_post 获取岗位下拉列表
  63 + // TODO @AI:拼接下!
  64 + return success(BeanUtils.toBean(list, MesMdWorkstationWorkerRespVO.class));
  65 + }
  66 +
  67 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/MesMdWorkstationMachineRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +
  6 +import java.time.LocalDateTime;
  7 +
  8 +@Schema(description = "管理后台 - MES 工位设备 Response VO")
  9 +@Data
  10 +public class MesMdWorkstationMachineRespVO {
  11 +
  12 + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  13 + private Long id;
  14 +
  15 + @Schema(description = "工位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  16 + private Long workstationId;
  17 +
  18 + @Schema(description = "设备编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  19 + private Long machineryId;
  20 +
  21 + @Schema(description = "设备编码", example = "M001")
  22 + private String machineryCode;
  23 +
  24 + @Schema(description = "设备名称", example = "CNC数控机床")
  25 + private String machineryName;
  26 +
  27 + @Schema(description = "数量", example = "1")
  28 + private Integer quantity;
  29 +
  30 + @Schema(description = "备注")
  31 + private String remark;
  32 +
  33 + @Schema(description = "创建时间")
  34 + private LocalDateTime createTime;
  35 +
  36 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/MesMdWorkstationMachineSaveReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import jakarta.validation.constraints.NotNull;
  5 +import lombok.Data;
  6 +
  7 +@Schema(description = "管理后台 - MES 工位设备新增 Request VO")
  8 +@Data
  9 +public class MesMdWorkstationMachineSaveReqVO {
  10 +
  11 + @Schema(description = "编号", example = "1024")
  12 + private Long id;
  13 +
  14 + @Schema(description = "工位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  15 + @NotNull(message = "工位不能为空")
  16 + private Long workstationId;
  17 +
  18 + @Schema(description = "设备编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  19 + @NotNull(message = "设备不能为空")
  20 + private Long machineryId;
  21 +
  22 + @Schema(description = "数量", example = "1")
  23 + private Integer quantity;
  24 +
  25 + @Schema(description = "备注")
  26 + private String remark;
  27 +
  28 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/MesMdWorkstationPageReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
  8 +
  9 +@Schema(description = "管理后台 - MES 工位分页 Request VO")
  10 +@Data
  11 +@EqualsAndHashCode(callSuper = true)
  12 +@ToString(callSuper = true)
  13 +public class MesMdWorkstationPageReqVO extends PageParam {
  14 +
  15 + @Schema(description = "工位编码", example = "WK001")
  16 + private String code;
  17 +
  18 + @Schema(description = "工位名称", example = "一号工位")
  19 + private String name;
  20 +
  21 + @Schema(description = "所在车间编号", example = "1")
  22 + private Long workshopId;
  23 +
  24 + @Schema(description = "状态", example = "0")
  25 + private Integer status;
  26 +
  27 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/MesMdWorkstationRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo;
  2 +
  3 +import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
  4 +import cn.idev.excel.annotation.ExcelProperty;
  5 +import io.swagger.v3.oas.annotations.media.Schema;
  6 +import lombok.Data;
  7 +
  8 +import java.time.LocalDateTime;
  9 +
  10 +@Schema(description = "管理后台 - MES 工位 Response VO")
  11 +@Data
  12 +@ExcelIgnoreUnannotated
  13 +public class MesMdWorkstationRespVO {
  14 +
  15 + @Schema(description = "工位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  16 + @ExcelProperty("工位编号")
  17 + private Long id;
  18 +
  19 + @Schema(description = "工位编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "WK001")
  20 + @ExcelProperty("工位编码")
  21 + private String code;
  22 +
  23 + @Schema(description = "工位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "一号工位")
  24 + @ExcelProperty("工位名称")
  25 + private String name;
  26 +
  27 + @Schema(description = "工位地点", example = "A区1号线")
  28 + @ExcelProperty("工位地点")
  29 + private String address;
  30 +
  31 + @Schema(description = "所在车间编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  32 + private Long workshopId;
  33 +
  34 + @Schema(description = "车间名称", example = "一号车间")
  35 + @ExcelProperty("车间名称")
  36 + private String workshopName;
  37 +
  38 + @Schema(description = "工序编号", example = "1")
  39 + private Long processId;
  40 +
  41 + @Schema(description = "线边库编号", example = "1")
  42 + private Long warehouseId;
  43 +
  44 + @Schema(description = "库区编号", example = "1")
  45 + private Long locationId;
  46 +
  47 + @Schema(description = "库位编号", example = "1")
  48 + private Long areaId;
  49 +
  50 + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
  51 + @ExcelProperty("状态")
  52 + private Integer status;
  53 +
  54 + @Schema(description = "备注", example = "备注")
  55 + @ExcelProperty("备注")
  56 + private String remark;
  57 +
  58 + @Schema(description = "预留字段1")
  59 + private String attribute1;
  60 +
  61 + @Schema(description = "预留字段2")
  62 + private String attribute2;
  63 +
  64 + @Schema(description = "预留字段3")
  65 + private Integer attribute3;
  66 +
  67 + @Schema(description = "预留字段4")
  68 + private Integer attribute4;
  69 +
  70 + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  71 + @ExcelProperty("创建时间")
  72 + private LocalDateTime createTime;
  73 +
  74 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/MesMdWorkstationSaveReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import jakarta.validation.constraints.NotEmpty;
  5 +import jakarta.validation.constraints.NotNull;
  6 +import lombok.Data;
  7 +
  8 +@Schema(description = "管理后台 - MES 工位新增/修改 Request VO")
  9 +@Data
  10 +public class MesMdWorkstationSaveReqVO {
  11 +
  12 + @Schema(description = "工位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  13 + private Long id;
  14 +
  15 + @Schema(description = "工位编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "WK001")
  16 + @NotEmpty(message = "工位编码不能为空")
  17 + private String code;
  18 +
  19 + @Schema(description = "工位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "一号工位")
  20 + @NotEmpty(message = "工位名称不能为空")
  21 + private String name;
  22 +
  23 + @Schema(description = "工位地点", example = "A区1号线")
  24 + private String address;
  25 +
  26 + @Schema(description = "所在车间编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  27 + @NotNull(message = "所在车间不能为空")
  28 + private Long workshopId;
  29 +
  30 + @Schema(description = "工序编号", example = "1")
  31 + private Long processId;
  32 +
  33 + @Schema(description = "线边库编号", example = "1")
  34 + private Long warehouseId;
  35 +
  36 + @Schema(description = "库区编号", example = "1")
  37 + private Long locationId;
  38 +
  39 + @Schema(description = "库位编号", example = "1")
  40 + private Long areaId;
  41 +
  42 + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
  43 + @NotNull(message = "状态不能为空")
  44 + private Integer status;
  45 +
  46 + @Schema(description = "备注", example = "备注")
  47 + private String remark;
  48 +
  49 + @Schema(description = "预留字段1")
  50 + private String attribute1;
  51 +
  52 + @Schema(description = "预留字段2")
  53 + private String attribute2;
  54 +
  55 + @Schema(description = "预留字段3")
  56 + private Integer attribute3;
  57 +
  58 + @Schema(description = "预留字段4")
  59 + private Integer attribute4;
  60 +
  61 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/tool/MesMdWorkstationToolRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.tool;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +
  6 +import java.time.LocalDateTime;
  7 +
  8 +@Schema(description = "管理后台 - MES 工位工具 Response VO")
  9 +@Data
  10 +public class MesMdWorkstationToolRespVO {
  11 +
  12 + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  13 + private Long id;
  14 +
  15 + @Schema(description = "工位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  16 + private Long workstationId;
  17 +
  18 + @Schema(description = "工具类型编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  19 + private Long toolTypeId;
  20 +
  21 + @Schema(description = "工具类型名称", example = "钻头")
  22 + private String toolTypeName;
  23 +
  24 + @Schema(description = "数量", example = "1")
  25 + private Integer quantity;
  26 +
  27 + @Schema(description = "备注")
  28 + private String remark;
  29 +
  30 + @Schema(description = "创建时间")
  31 + private LocalDateTime createTime;
  32 +
  33 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/tool/MesMdWorkstationToolSaveReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.tool;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import jakarta.validation.constraints.NotNull;
  5 +import lombok.Data;
  6 +
  7 +@Schema(description = "管理后台 - MES 工位工具新增/修改 Request VO")
  8 +@Data
  9 +public class MesMdWorkstationToolSaveReqVO {
  10 +
  11 + @Schema(description = "编号", example = "1024")
  12 + private Long id;
  13 +
  14 + @Schema(description = "工位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  15 + @NotNull(message = "工位不能为空")
  16 + private Long workstationId;
  17 +
  18 + @Schema(description = "工具类型编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  19 + @NotNull(message = "工具类型不能为空")
  20 + private Long toolTypeId;
  21 +
  22 + @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  23 + @NotNull(message = "数量不能为空")
  24 + private Integer quantity;
  25 +
  26 + @Schema(description = "备注")
  27 + private String remark;
  28 +
  29 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/worker/MesMdWorkstationWorkerRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.worker;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import lombok.Data;
  5 +
  6 +import java.time.LocalDateTime;
  7 +
  8 +@Schema(description = "管理后台 - MES 工位人员 Response VO")
  9 +@Data
  10 +public class MesMdWorkstationWorkerRespVO {
  11 +
  12 + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  13 + private Long id;
  14 +
  15 + @Schema(description = "工位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  16 + private Long workstationId;
  17 +
  18 + @Schema(description = "岗位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  19 + private Long postId;
  20 +
  21 + @Schema(description = "岗位名称", example = "操作员")
  22 + private String postName;
  23 +
  24 + @Schema(description = "数量", example = "1")
  25 + private Integer quantity;
  26 +
  27 + @Schema(description = "备注")
  28 + private String remark;
  29 +
  30 + @Schema(description = "创建时间")
  31 + private LocalDateTime createTime;
  32 +
  33 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/worker/MesMdWorkstationWorkerSaveReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.worker;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import jakarta.validation.constraints.NotNull;
  5 +import lombok.Data;
  6 +
  7 +@Schema(description = "管理后台 - MES 工位人员新增/修改 Request VO")
  8 +@Data
  9 +public class MesMdWorkstationWorkerSaveReqVO {
  10 +
  11 + @Schema(description = "编号", example = "1024")
  12 + private Long id;
  13 +
  14 + @Schema(description = "工位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  15 + @NotNull(message = "工位不能为空")
  16 + private Long workstationId;
  17 +
  18 + @Schema(description = "岗位编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  19 + @NotNull(message = "岗位不能为空")
  20 + private Long postId;
  21 +
  22 + @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  23 + @NotNull(message = "数量不能为空")
  24 + private Integer quantity;
  25 +
  26 + @Schema(description = "备注")
  27 + private String remark;
  28 +
  29 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/workshop/MesMdWorkshopPageReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.workshop;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
  4 +import io.swagger.v3.oas.annotations.media.Schema;
  5 +import lombok.Data;
  6 +import lombok.EqualsAndHashCode;
  7 +import lombok.ToString;
  8 +
  9 +@Schema(description = "管理后台 - MES 车间分页 Request VO")
  10 +@Data
  11 +@EqualsAndHashCode(callSuper = true)
  12 +@ToString(callSuper = true)
  13 +public class MesMdWorkshopPageReqVO extends PageParam {
  14 +
  15 + @Schema(description = "车间编码", example = "WS001")
  16 + private String code;
  17 +
  18 + @Schema(description = "车间名称", example = "一号车间")
  19 + private String name;
  20 +
  21 + @Schema(description = "状态", example = "0")
  22 + private Integer status;
  23 +
  24 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/workshop/MesMdWorkshopRespVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.workshop;
  2 +
  3 +import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
  4 +import cn.idev.excel.annotation.ExcelProperty;
  5 +import io.swagger.v3.oas.annotations.media.Schema;
  6 +import lombok.Data;
  7 +
  8 +import java.math.BigDecimal;
  9 +import java.time.LocalDateTime;
  10 +
  11 +@Schema(description = "管理后台 - MES 车间 Response VO")
  12 +@Data
  13 +@ExcelIgnoreUnannotated
  14 +public class MesMdWorkshopRespVO {
  15 +
  16 + @Schema(description = "车间编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  17 + @ExcelProperty("车间编号")
  18 + private Long id;
  19 +
  20 + @Schema(description = "车间编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "WS001")
  21 + @ExcelProperty("车间编码")
  22 + private String code;
  23 +
  24 + @Schema(description = "车间名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "一号车间")
  25 + @ExcelProperty("车间名称")
  26 + private String name;
  27 +
  28 + @Schema(description = "面积", example = "1000.00")
  29 + @ExcelProperty("面积")
  30 + private BigDecimal area;
  31 +
  32 + @Schema(description = "负责人用户编号", example = "1")
  33 + private Long chargeUserId;
  34 +
  35 + @Schema(description = "负责人名称", example = "张三")
  36 + @ExcelProperty("负责人")
  37 + private String chargeUserName;
  38 +
  39 + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
  40 + @ExcelProperty("状态")
  41 + private Integer status;
  42 +
  43 + @Schema(description = "备注", example = "备注")
  44 + @ExcelProperty("备注")
  45 + private String remark;
  46 +
  47 + @Schema(description = "预留字段1")
  48 + private String attribute1;
  49 +
  50 + @Schema(description = "预留字段2")
  51 + private String attribute2;
  52 +
  53 + @Schema(description = "预留字段3")
  54 + private Integer attribute3;
  55 +
  56 + @Schema(description = "预留字段4")
  57 + private Integer attribute4;
  58 +
  59 + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  60 + @ExcelProperty("创建时间")
  61 + private LocalDateTime createTime;
  62 +
  63 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/workstation/vo/workshop/MesMdWorkshopSaveReqVO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.workshop;
  2 +
  3 +import io.swagger.v3.oas.annotations.media.Schema;
  4 +import jakarta.validation.constraints.NotEmpty;
  5 +import jakarta.validation.constraints.NotNull;
  6 +import lombok.Data;
  7 +
  8 +import java.math.BigDecimal;
  9 +
  10 +@Schema(description = "管理后台 - MES 车间新增/修改 Request VO")
  11 +@Data
  12 +public class MesMdWorkshopSaveReqVO {
  13 +
  14 + @Schema(description = "车间编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  15 + private Long id;
  16 +
  17 + @Schema(description = "车间编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "WS001")
  18 + @NotEmpty(message = "车间编码不能为空")
  19 + private String code;
  20 +
  21 + @Schema(description = "车间名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "一号车间")
  22 + @NotEmpty(message = "车间名称不能为空")
  23 + private String name;
  24 +
  25 + @Schema(description = "面积", example = "1000.00")
  26 + private BigDecimal area;
  27 +
  28 + @Schema(description = "负责人用户编号", example = "1")
  29 + private Long chargeUserId;
  30 +
  31 + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
  32 + @NotNull(message = "状态不能为空")
  33 + private Integer status;
  34 +
  35 + @Schema(description = "备注", example = "备注")
  36 + private String remark;
  37 +
  38 + @Schema(description = "预留字段1")
  39 + private String attribute1;
  40 +
  41 + @Schema(description = "预留字段2")
  42 + private String attribute2;
  43 +
  44 + @Schema(description = "预留字段3")
  45 + private Integer attribute3;
  46 +
  47 + @Schema(description = "预留字段4")
  48 + private Integer attribute4;
  49 +
  50 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/workstation/MesMdWorkshopDO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import com.baomidou.mybatisplus.annotation.KeySequence;
  5 +import com.baomidou.mybatisplus.annotation.TableId;
  6 +import com.baomidou.mybatisplus.annotation.TableName;
  7 +import lombok.*;
  8 +
  9 +import java.math.BigDecimal;
  10 +
  11 +// TODO @AI:注释;以及关联;
  12 +@TableName("mes_md_workshop")
  13 +@KeySequence("mes_md_workshop_seq")
  14 +@Data
  15 +@EqualsAndHashCode(callSuper = true)
  16 +@ToString(callSuper = true)
  17 +@Builder
  18 +@NoArgsConstructor
  19 +@AllArgsConstructor
  20 +public class MesMdWorkshopDO extends BaseDO {
  21 +
  22 + @TableId
  23 + private Long id;
  24 + private String code;
  25 + private String name;
  26 + private BigDecimal area;
  27 + private Long chargeUserId;
  28 + private Integer status;
  29 + private String remark;
  30 + private String attribute1;
  31 + private String attribute2;
  32 + private Integer attribute3;
  33 + private Integer attribute4;
  34 +
  35 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/workstation/MesMdWorkstationDO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import com.baomidou.mybatisplus.annotation.KeySequence;
  5 +import com.baomidou.mybatisplus.annotation.TableId;
  6 +import com.baomidou.mybatisplus.annotation.TableName;
  7 +import lombok.*;
  8 +
  9 +// TODO @AI:注释;以及关联;
  10 +@TableName("mes_md_workstation")
  11 +@KeySequence("mes_md_workstation_seq")
  12 +@Data
  13 +@EqualsAndHashCode(callSuper = true)
  14 +@ToString(callSuper = true)
  15 +@Builder
  16 +@NoArgsConstructor
  17 +@AllArgsConstructor
  18 +public class MesMdWorkstationDO extends BaseDO {
  19 +
  20 + @TableId
  21 + private Long id;
  22 + private String code;
  23 + private String name;
  24 + private String address;
  25 + private Long workshopId;
  26 + private Long processId;
  27 + private Long warehouseId;
  28 + private Long locationId;
  29 + private Long areaId;
  30 + private Integer status;
  31 + private String remark;
  32 + private String attribute1;
  33 + private String attribute2;
  34 + private Integer attribute3;
  35 + private Integer attribute4;
  36 +
  37 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/workstation/MesMdWorkstationMachineDO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import com.baomidou.mybatisplus.annotation.KeySequence;
  5 +import com.baomidou.mybatisplus.annotation.TableId;
  6 +import com.baomidou.mybatisplus.annotation.TableName;
  7 +import lombok.*;
  8 +
  9 +// TODO @AI:注释;以及关联;
  10 +@TableName("mes_md_workstation_machine")
  11 +@KeySequence("mes_md_workstation_machine_seq")
  12 +@Data
  13 +@EqualsAndHashCode(callSuper = true)
  14 +@ToString(callSuper = true)
  15 +@Builder
  16 +@NoArgsConstructor
  17 +@AllArgsConstructor
  18 +public class MesMdWorkstationMachineDO extends BaseDO {
  19 +
  20 + @TableId
  21 + private Long id;
  22 + private Long workstationId;
  23 + private Long machineryId;
  24 + private Integer quantity;
  25 + private String remark;
  26 + private String attribute1;
  27 + private String attribute2;
  28 + private Integer attribute3;
  29 + private Integer attribute4;
  30 +
  31 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/workstation/MesMdWorkstationToolDO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import com.baomidou.mybatisplus.annotation.KeySequence;
  5 +import com.baomidou.mybatisplus.annotation.TableId;
  6 +import com.baomidou.mybatisplus.annotation.TableName;
  7 +import lombok.*;
  8 +
  9 +// TODO @AI:注释;以及关联;
  10 +@TableName("mes_md_workstation_tool")
  11 +@KeySequence("mes_md_workstation_tool_seq")
  12 +@Data
  13 +@EqualsAndHashCode(callSuper = true)
  14 +@ToString(callSuper = true)
  15 +@Builder
  16 +@NoArgsConstructor
  17 +@AllArgsConstructor
  18 +public class MesMdWorkstationToolDO extends BaseDO {
  19 +
  20 + @TableId
  21 + private Long id;
  22 + private Long workstationId;
  23 + private Long toolTypeId;
  24 + private Integer quantity;
  25 + private String remark;
  26 + private String attribute1;
  27 + private String attribute2;
  28 + private Integer attribute3;
  29 + private Integer attribute4;
  30 +
  31 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/md/workstation/MesMdWorkstationWorkerDO.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import com.baomidou.mybatisplus.annotation.KeySequence;
  5 +import com.baomidou.mybatisplus.annotation.TableId;
  6 +import com.baomidou.mybatisplus.annotation.TableName;
  7 +import lombok.*;
  8 +
  9 +// TODO @AI:注释;以及关联;
  10 +@TableName("mes_md_workstation_worker")
  11 +@KeySequence("mes_md_workstation_worker_seq")
  12 +@Data
  13 +@EqualsAndHashCode(callSuper = true)
  14 +@ToString(callSuper = true)
  15 +@Builder
  16 +@NoArgsConstructor
  17 +@AllArgsConstructor
  18 +public class MesMdWorkstationWorkerDO extends BaseDO {
  19 +
  20 + @TableId
  21 + private Long id;
  22 + private Long workstationId;
  23 + private Long postId;
  24 + private Integer quantity;
  25 + private String remark;
  26 + private String attribute1;
  27 + private String attribute2;
  28 + private Integer attribute3;
  29 + private Integer attribute4;
  30 +
  31 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/workstation/MesMdWorkshopMapper.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.dal.mysql.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  5 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  6 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.workshop.MesMdWorkshopPageReqVO;
  7 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkshopDO;
  8 +import org.apache.ibatis.annotations.Mapper;
  9 +
  10 +import java.util.List;
  11 +
  12 +// TODO @AI:注释;
  13 +@Mapper
  14 +public interface MesMdWorkshopMapper extends BaseMapperX<MesMdWorkshopDO> {
  15 +
  16 + default PageResult<MesMdWorkshopDO> selectPage(MesMdWorkshopPageReqVO reqVO) {
  17 + return selectPage(reqVO, new LambdaQueryWrapperX<MesMdWorkshopDO>()
  18 + .eqIfPresent(MesMdWorkshopDO::getCode, reqVO.getCode())
  19 + .likeIfPresent(MesMdWorkshopDO::getName, reqVO.getName())
  20 + .eqIfPresent(MesMdWorkshopDO::getStatus, reqVO.getStatus())
  21 + .orderByDesc(MesMdWorkshopDO::getId));
  22 + }
  23 +
  24 + default MesMdWorkshopDO selectByCode(String code) {
  25 + return selectOne(MesMdWorkshopDO::getCode, code);
  26 + }
  27 +
  28 + default MesMdWorkshopDO selectByName(String name) {
  29 + return selectOne(MesMdWorkshopDO::getName, name);
  30 + }
  31 +
  32 + default List<MesMdWorkshopDO> selectListByStatus(Integer status) {
  33 + return selectList(MesMdWorkshopDO::getStatus, status);
  34 + }
  35 +
  36 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/workstation/MesMdWorkstationMachineMapper.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.dal.mysql.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  4 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationMachineDO;
  5 +import org.apache.ibatis.annotations.Mapper;
  6 +
  7 +import java.util.List;
  8 +
  9 +// TODO @AI:注释;
  10 +@Mapper
  11 +public interface MesMdWorkstationMachineMapper extends BaseMapperX<MesMdWorkstationMachineDO> {
  12 +
  13 + default List<MesMdWorkstationMachineDO> selectListByWorkstationId(Long workstationId) {
  14 + return selectList(MesMdWorkstationMachineDO::getWorkstationId, workstationId);
  15 + }
  16 +
  17 + default MesMdWorkstationMachineDO selectByMachineryId(Long machineryId) {
  18 + return selectOne(MesMdWorkstationMachineDO::getMachineryId, machineryId);
  19 + }
  20 +
  21 + default void deleteByWorkstationId(Long workstationId) {
  22 + delete(MesMdWorkstationMachineDO::getWorkstationId, workstationId);
  23 + }
  24 +
  25 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/workstation/MesMdWorkstationMapper.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.dal.mysql.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  5 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  6 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorkstationPageReqVO;
  7 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
  8 +import org.apache.ibatis.annotations.Mapper;
  9 +
  10 +import java.util.List;
  11 +
  12 +// TODO @AI:注释;
  13 +@Mapper
  14 +public interface MesMdWorkstationMapper extends BaseMapperX<MesMdWorkstationDO> {
  15 +
  16 + default PageResult<MesMdWorkstationDO> selectPage(MesMdWorkstationPageReqVO reqVO) {
  17 + return selectPage(reqVO, new LambdaQueryWrapperX<MesMdWorkstationDO>()
  18 + .eqIfPresent(MesMdWorkstationDO::getCode, reqVO.getCode())
  19 + .likeIfPresent(MesMdWorkstationDO::getName, reqVO.getName())
  20 + .eqIfPresent(MesMdWorkstationDO::getWorkshopId, reqVO.getWorkshopId())
  21 + .eqIfPresent(MesMdWorkstationDO::getStatus, reqVO.getStatus())
  22 + .orderByDesc(MesMdWorkstationDO::getId));
  23 + }
  24 +
  25 + default MesMdWorkstationDO selectByCode(String code) {
  26 + return selectOne(MesMdWorkstationDO::getCode, code);
  27 + }
  28 +
  29 + default MesMdWorkstationDO selectByName(String name) {
  30 + return selectOne(MesMdWorkstationDO::getName, name);
  31 + }
  32 +
  33 + default List<MesMdWorkstationDO> selectListByStatus(Integer status) {
  34 + return selectList(MesMdWorkstationDO::getStatus, status);
  35 + }
  36 +
  37 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/workstation/MesMdWorkstationToolMapper.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.dal.mysql.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  4 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationToolDO;
  5 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6 +import org.apache.ibatis.annotations.Mapper;
  7 +
  8 +import java.util.List;
  9 +
  10 +// TODO @AI:注释;
  11 +@Mapper
  12 +public interface MesMdWorkstationToolMapper extends BaseMapperX<MesMdWorkstationToolDO> {
  13 +
  14 + default List<MesMdWorkstationToolDO> selectListByWorkstationId(Long workstationId) {
  15 + return selectList(MesMdWorkstationToolDO::getWorkstationId, workstationId);
  16 + }
  17 +
  18 + default MesMdWorkstationToolDO selectByWorkstationIdAndToolTypeId(Long workstationId, Long toolTypeId) {
  19 + return selectOne(new LambdaQueryWrapper<MesMdWorkstationToolDO>()
  20 + .eq(MesMdWorkstationToolDO::getWorkstationId, workstationId)
  21 + .eq(MesMdWorkstationToolDO::getToolTypeId, toolTypeId));
  22 + }
  23 +
  24 + default void deleteByWorkstationId(Long workstationId) {
  25 + delete(MesMdWorkstationToolDO::getWorkstationId, workstationId);
  26 + }
  27 +
  28 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/md/workstation/MesMdWorkstationWorkerMapper.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.dal.mysql.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  4 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationWorkerDO;
  5 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6 +import org.apache.ibatis.annotations.Mapper;
  7 +
  8 +import java.util.List;
  9 +
  10 +// TODO @AI:注释;
  11 +@Mapper
  12 +public interface MesMdWorkstationWorkerMapper extends BaseMapperX<MesMdWorkstationWorkerDO> {
  13 +
  14 + default List<MesMdWorkstationWorkerDO> selectListByWorkstationId(Long workstationId) {
  15 + return selectList(MesMdWorkstationWorkerDO::getWorkstationId, workstationId);
  16 + }
  17 +
  18 + default MesMdWorkstationWorkerDO selectByWorkstationIdAndPostId(Long workstationId, Long postId) {
  19 + return selectOne(new LambdaQueryWrapper<MesMdWorkstationWorkerDO>()
  20 + .eq(MesMdWorkstationWorkerDO::getWorkstationId, workstationId)
  21 + .eq(MesMdWorkstationWorkerDO::getPostId, postId));
  22 + }
  23 +
  24 + default void deleteByWorkstationId(Long workstationId) {
  25 + delete(MesMdWorkstationWorkerDO::getWorkstationId, workstationId);
  26 + }
  27 +
  28 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkshopService.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.service.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.workshop.MesMdWorkshopPageReqVO;
  5 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.workshop.MesMdWorkshopSaveReqVO;
  6 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkshopDO;
  7 +import jakarta.validation.Valid;
  8 +
  9 +import java.util.List;
  10 +
  11 +// TODO @AI:注释;
  12 +public interface MesMdWorkshopService {
  13 +
  14 + Long createWorkshop(@Valid MesMdWorkshopSaveReqVO createReqVO);
  15 +
  16 + void updateWorkshop(@Valid MesMdWorkshopSaveReqVO updateReqVO);
  17 +
  18 + void deleteWorkshop(Long id);
  19 +
  20 + MesMdWorkshopDO getWorkshop(Long id);
  21 +
  22 + PageResult<MesMdWorkshopDO> getWorkshopPage(MesMdWorkshopPageReqVO pageReqVO);
  23 +
  24 + List<MesMdWorkshopDO> getWorkshopListByStatus(Integer status);
  25 +
  26 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkshopServiceImpl.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.service.md.workstation;
  2 +
  3 +import cn.hutool.core.util.ObjUtil;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  6 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.workshop.MesMdWorkshopPageReqVO;
  7 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.workshop.MesMdWorkshopSaveReqVO;
  8 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkshopDO;
  9 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
  10 +import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkshopMapper;
  11 +import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationMapper;
  12 +import jakarta.annotation.Resource;
  13 +import org.springframework.context.annotation.Lazy;
  14 +import org.springframework.stereotype.Service;
  15 +import org.springframework.validation.annotation.Validated;
  16 +
  17 +import java.util.List;
  18 +
  19 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  20 +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
  21 +
  22 +// TODO @AI:注释;
  23 +@Service
  24 +@Validated
  25 +public class MesMdWorkshopServiceImpl implements MesMdWorkshopService {
  26 +
  27 + @Resource
  28 + private MesMdWorkshopMapper workshopMapper;
  29 +
  30 + @Resource
  31 + @Lazy
  32 + private MesMdWorkstationMapper workstationMapper;
  33 +
  34 + @Override
  35 + public Long createWorkshop(MesMdWorkshopSaveReqVO createReqVO) {
  36 + validateWorkshopCodeUnique(null, createReqVO.getCode());
  37 + validateWorkshopNameUnique(null, createReqVO.getName());
  38 +
  39 + MesMdWorkshopDO workshop = BeanUtils.toBean(createReqVO, MesMdWorkshopDO.class);
  40 + workshopMapper.insert(workshop);
  41 + return workshop.getId();
  42 + }
  43 +
  44 + @Override
  45 + public void updateWorkshop(MesMdWorkshopSaveReqVO updateReqVO) {
  46 + validateWorkshopExists(updateReqVO.getId());
  47 + validateWorkshopCodeUnique(updateReqVO.getId(), updateReqVO.getCode());
  48 + validateWorkshopNameUnique(updateReqVO.getId(), updateReqVO.getName());
  49 +
  50 + MesMdWorkshopDO updateObj = BeanUtils.toBean(updateReqVO, MesMdWorkshopDO.class);
  51 + workshopMapper.updateById(updateObj);
  52 + }
  53 +
  54 + @Override
  55 + public void deleteWorkshop(Long id) {
  56 + validateWorkshopExists(id);
  57 + // 校验车间下是否存在工位
  58 + Long count = workstationMapper.selectCount(MesMdWorkstationDO::getWorkshopId, id);
  59 + if (count > 0) {
  60 + throw exception(MD_WORKSHOP_HAS_WORKSTATION);
  61 + }
  62 + workshopMapper.deleteById(id);
  63 + }
  64 +
  65 + private void validateWorkshopExists(Long id) {
  66 + if (workshopMapper.selectById(id) == null) {
  67 + throw exception(MD_WORKSHOP_NOT_EXISTS);
  68 + }
  69 + }
  70 +
  71 + private void validateWorkshopCodeUnique(Long id, String code) {
  72 + MesMdWorkshopDO workshop = workshopMapper.selectByCode(code);
  73 + if (workshop == null) {
  74 + return;
  75 + }
  76 + if (ObjUtil.notEqual(workshop.getId(), id)) {
  77 + throw exception(MD_WORKSHOP_CODE_DUPLICATE);
  78 + }
  79 + }
  80 +
  81 + private void validateWorkshopNameUnique(Long id, String name) {
  82 + MesMdWorkshopDO workshop = workshopMapper.selectByName(name);
  83 + if (workshop == null) {
  84 + return;
  85 + }
  86 + if (ObjUtil.notEqual(workshop.getId(), id)) {
  87 + throw exception(MD_WORKSHOP_NAME_DUPLICATE);
  88 + }
  89 + }
  90 +
  91 + @Override
  92 + public MesMdWorkshopDO getWorkshop(Long id) {
  93 + return workshopMapper.selectById(id);
  94 + }
  95 +
  96 + @Override
  97 + public PageResult<MesMdWorkshopDO> getWorkshopPage(MesMdWorkshopPageReqVO pageReqVO) {
  98 + return workshopMapper.selectPage(pageReqVO);
  99 + }
  100 +
  101 + @Override
  102 + public List<MesMdWorkshopDO> getWorkshopListByStatus(Integer status) {
  103 + return workshopMapper.selectListByStatus(status);
  104 + }
  105 +
  106 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationMachineService.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.service.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorkstationMachineSaveReqVO;
  4 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationMachineDO;
  5 +import jakarta.validation.Valid;
  6 +
  7 +import java.util.List;
  8 +
  9 +// TODO @AI:注释;
  10 +public interface MesMdWorkstationMachineService {
  11 +
  12 + Long createWorkstationMachine(@Valid MesMdWorkstationMachineSaveReqVO createReqVO);
  13 +
  14 + void deleteWorkstationMachine(Long id);
  15 +
  16 + List<MesMdWorkstationMachineDO> getWorkstationMachineListByWorkstationId(Long workstationId);
  17 +
  18 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationMachineServiceImpl.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.service.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  4 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorkstationMachineSaveReqVO;
  5 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationMachineDO;
  6 +import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationMachineMapper;
  7 +import jakarta.annotation.Resource;
  8 +import org.springframework.stereotype.Service;
  9 +import org.springframework.validation.annotation.Validated;
  10 +
  11 +import java.util.List;
  12 +
  13 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  14 +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
  15 +
  16 +// TODO @AI:注释;
  17 +@Service
  18 +@Validated
  19 +public class MesMdWorkstationMachineServiceImpl implements MesMdWorkstationMachineService {
  20 +
  21 + @Resource
  22 + private MesMdWorkstationMachineMapper workstationMachineMapper;
  23 +
  24 + @Override
  25 + public Long createWorkstationMachine(MesMdWorkstationMachineSaveReqVO createReqVO) {
  26 + // 校验该设备是否已分配到其他工位
  27 + MesMdWorkstationMachineDO existing = workstationMachineMapper.selectByMachineryId(createReqVO.getMachineryId());
  28 + if (existing != null) {
  29 + throw exception(MD_WORKSTATION_MACHINE_EXISTS);
  30 + }
  31 +
  32 + MesMdWorkstationMachineDO machine = BeanUtils.toBean(createReqVO, MesMdWorkstationMachineDO.class);
  33 + workstationMachineMapper.insert(machine);
  34 + return machine.getId();
  35 + }
  36 +
  37 + @Override
  38 + public void deleteWorkstationMachine(Long id) {
  39 + if (workstationMachineMapper.selectById(id) == null) {
  40 + throw exception(MD_WORKSTATION_MACHINE_NOT_EXISTS);
  41 + }
  42 + workstationMachineMapper.deleteById(id);
  43 + }
  44 +
  45 + @Override
  46 + public List<MesMdWorkstationMachineDO> getWorkstationMachineListByWorkstationId(Long workstationId) {
  47 + return workstationMachineMapper.selectListByWorkstationId(workstationId);
  48 + }
  49 +
  50 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationService.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.service.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorkstationPageReqVO;
  5 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorkstationSaveReqVO;
  6 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
  7 +import jakarta.validation.Valid;
  8 +
  9 +import java.util.List;
  10 +
  11 +// TODO @AI:注释;
  12 +public interface MesMdWorkstationService {
  13 +
  14 + Long createWorkstation(@Valid MesMdWorkstationSaveReqVO createReqVO);
  15 +
  16 + void updateWorkstation(@Valid MesMdWorkstationSaveReqVO updateReqVO);
  17 +
  18 + void deleteWorkstation(Long id);
  19 +
  20 + MesMdWorkstationDO getWorkstation(Long id);
  21 +
  22 + PageResult<MesMdWorkstationDO> getWorkstationPage(MesMdWorkstationPageReqVO pageReqVO);
  23 +
  24 + List<MesMdWorkstationDO> getWorkstationListByStatus(Integer status);
  25 +
  26 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationServiceImpl.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.service.md.workstation;
  2 +
  3 +import cn.hutool.core.util.ObjUtil;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageResult;
  5 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  6 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorkstationPageReqVO;
  7 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.MesMdWorkstationSaveReqVO;
  8 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
  9 +import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationMachineMapper;
  10 +import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationMapper;
  11 +import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationToolMapper;
  12 +import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationWorkerMapper;
  13 +import jakarta.annotation.Resource;
  14 +import org.springframework.stereotype.Service;
  15 +import org.springframework.transaction.annotation.Transactional;
  16 +import org.springframework.validation.annotation.Validated;
  17 +
  18 +import java.util.List;
  19 +
  20 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  21 +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
  22 +
  23 +// TODO @AI:注释;
  24 +@Service
  25 +@Validated
  26 +public class MesMdWorkstationServiceImpl implements MesMdWorkstationService {
  27 +
  28 + @Resource
  29 + private MesMdWorkstationMapper workstationMapper;
  30 +
  31 + @Resource
  32 + private MesMdWorkstationMachineMapper workstationMachineMapper;
  33 +
  34 + @Resource
  35 + private MesMdWorkstationToolMapper workstationToolMapper;
  36 +
  37 + @Resource
  38 + private MesMdWorkstationWorkerMapper workstationWorkerMapper;
  39 +
  40 + @Resource
  41 + private MesMdWorkshopService workshopService;
  42 +
  43 + @Override
  44 + public Long createWorkstation(MesMdWorkstationSaveReqVO createReqVO) {
  45 + validateWorkstationCodeUnique(null, createReqVO.getCode());
  46 + validateWorkstationNameUnique(null, createReqVO.getName());
  47 + // 校验车间存在
  48 + workshopService.getWorkshop(createReqVO.getWorkshopId()); // validateWorkshopExists via getWorkshop
  49 +
  50 + MesMdWorkstationDO workstation = BeanUtils.toBean(createReqVO, MesMdWorkstationDO.class);
  51 + workstationMapper.insert(workstation);
  52 + return workstation.getId();
  53 + }
  54 +
  55 + @Override
  56 + public void updateWorkstation(MesMdWorkstationSaveReqVO updateReqVO) {
  57 + validateWorkstationExists(updateReqVO.getId());
  58 + validateWorkstationCodeUnique(updateReqVO.getId(), updateReqVO.getCode());
  59 + validateWorkstationNameUnique(updateReqVO.getId(), updateReqVO.getName());
  60 + // 校验车间存在
  61 + workshopService.getWorkshop(updateReqVO.getWorkshopId());
  62 +
  63 + MesMdWorkstationDO updateObj = BeanUtils.toBean(updateReqVO, MesMdWorkstationDO.class);
  64 + workstationMapper.updateById(updateObj);
  65 + }
  66 +
  67 + @Override
  68 + @Transactional(rollbackFor = Exception.class)
  69 + public void deleteWorkstation(Long id) {
  70 + validateWorkstationExists(id);
  71 + // 级联删除子资源
  72 + workstationMachineMapper.deleteByWorkstationId(id);
  73 + workstationToolMapper.deleteByWorkstationId(id);
  74 + workstationWorkerMapper.deleteByWorkstationId(id);
  75 + // 删除工位
  76 + workstationMapper.deleteById(id);
  77 + }
  78 +
  79 + private void validateWorkstationExists(Long id) {
  80 + if (workstationMapper.selectById(id) == null) {
  81 + throw exception(MD_WORKSTATION_NOT_EXISTS);
  82 + }
  83 + }
  84 +
  85 + private void validateWorkstationCodeUnique(Long id, String code) {
  86 + MesMdWorkstationDO workstation = workstationMapper.selectByCode(code);
  87 + if (workstation == null) {
  88 + return;
  89 + }
  90 + if (ObjUtil.notEqual(workstation.getId(), id)) {
  91 + throw exception(MD_WORKSTATION_CODE_DUPLICATE);
  92 + }
  93 + }
  94 +
  95 + private void validateWorkstationNameUnique(Long id, String name) {
  96 + MesMdWorkstationDO workstation = workstationMapper.selectByName(name);
  97 + if (workstation == null) {
  98 + return;
  99 + }
  100 + if (ObjUtil.notEqual(workstation.getId(), id)) {
  101 + throw exception(MD_WORKSTATION_NAME_DUPLICATE);
  102 + }
  103 + }
  104 +
  105 + @Override
  106 + public MesMdWorkstationDO getWorkstation(Long id) {
  107 + return workstationMapper.selectById(id);
  108 + }
  109 +
  110 + @Override
  111 + public PageResult<MesMdWorkstationDO> getWorkstationPage(MesMdWorkstationPageReqVO pageReqVO) {
  112 + return workstationMapper.selectPage(pageReqVO);
  113 + }
  114 +
  115 + @Override
  116 + public List<MesMdWorkstationDO> getWorkstationListByStatus(Integer status) {
  117 + return workstationMapper.selectListByStatus(status);
  118 + }
  119 +
  120 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationToolService.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.service.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.tool.MesMdWorkstationToolSaveReqVO;
  4 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationToolDO;
  5 +import jakarta.validation.Valid;
  6 +
  7 +import java.util.List;
  8 +
  9 +// TODO @AI:注释;
  10 +public interface MesMdWorkstationToolService {
  11 +
  12 + Long createWorkstationTool(@Valid MesMdWorkstationToolSaveReqVO createReqVO);
  13 +
  14 + void updateWorkstationTool(@Valid MesMdWorkstationToolSaveReqVO updateReqVO);
  15 +
  16 + void deleteWorkstationTool(Long id);
  17 +
  18 + List<MesMdWorkstationToolDO> getWorkstationToolListByWorkstationId(Long workstationId);
  19 +
  20 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationToolServiceImpl.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.service.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  4 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.tool.MesMdWorkstationToolSaveReqVO;
  5 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationToolDO;
  6 +import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationToolMapper;
  7 +import jakarta.annotation.Resource;
  8 +import org.springframework.stereotype.Service;
  9 +import org.springframework.validation.annotation.Validated;
  10 +
  11 +import java.util.List;
  12 +
  13 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  14 +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
  15 +
  16 +// TODO @AI:注释;
  17 +@Service
  18 +@Validated
  19 +public class MesMdWorkstationToolServiceImpl implements MesMdWorkstationToolService {
  20 +
  21 + @Resource
  22 + private MesMdWorkstationToolMapper workstationToolMapper;
  23 +
  24 + @Override
  25 + public Long createWorkstationTool(MesMdWorkstationToolSaveReqVO createReqVO) {
  26 + // 校验同一工位下工具类型不重复
  27 + MesMdWorkstationToolDO existing = workstationToolMapper.selectByWorkstationIdAndToolTypeId(
  28 + createReqVO.getWorkstationId(), createReqVO.getToolTypeId());
  29 + if (existing != null) {
  30 + throw exception(MD_WORKSTATION_TOOL_TYPE_EXISTS);
  31 + }
  32 +
  33 + MesMdWorkstationToolDO tool = BeanUtils.toBean(createReqVO, MesMdWorkstationToolDO.class);
  34 + workstationToolMapper.insert(tool);
  35 + return tool.getId();
  36 + }
  37 +
  38 + @Override
  39 + public void updateWorkstationTool(MesMdWorkstationToolSaveReqVO updateReqVO) {
  40 + if (workstationToolMapper.selectById(updateReqVO.getId()) == null) {
  41 + throw exception(MD_WORKSTATION_TOOL_NOT_EXISTS);
  42 + }
  43 + MesMdWorkstationToolDO updateObj = BeanUtils.toBean(updateReqVO, MesMdWorkstationToolDO.class);
  44 + workstationToolMapper.updateById(updateObj);
  45 + }
  46 +
  47 + @Override
  48 + public void deleteWorkstationTool(Long id) {
  49 + if (workstationToolMapper.selectById(id) == null) {
  50 + throw exception(MD_WORKSTATION_TOOL_NOT_EXISTS);
  51 + }
  52 + workstationToolMapper.deleteById(id);
  53 + }
  54 +
  55 + @Override
  56 + public List<MesMdWorkstationToolDO> getWorkstationToolListByWorkstationId(Long workstationId) {
  57 + return workstationToolMapper.selectListByWorkstationId(workstationId);
  58 + }
  59 +
  60 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationWorkerService.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.service.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.worker.MesMdWorkstationWorkerSaveReqVO;
  4 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationWorkerDO;
  5 +import jakarta.validation.Valid;
  6 +
  7 +import java.util.List;
  8 +
  9 +// TODO @AI:注释;
  10 +public interface MesMdWorkstationWorkerService {
  11 +
  12 + Long createWorkstationWorker(@Valid MesMdWorkstationWorkerSaveReqVO createReqVO);
  13 +
  14 + void updateWorkstationWorker(@Valid MesMdWorkstationWorkerSaveReqVO updateReqVO);
  15 +
  16 + void deleteWorkstationWorker(Long id);
  17 +
  18 + List<MesMdWorkstationWorkerDO> getWorkstationWorkerListByWorkstationId(Long workstationId);
  19 +
  20 +}
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/workstation/MesMdWorkstationWorkerServiceImpl.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.service.md.workstation;
  2 +
  3 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
  4 +import cn.iocoder.yudao.module.mes.controller.admin.md.workstation.vo.worker.MesMdWorkstationWorkerSaveReqVO;
  5 +import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationWorkerDO;
  6 +import cn.iocoder.yudao.module.mes.dal.mysql.md.workstation.MesMdWorkstationWorkerMapper;
  7 +import jakarta.annotation.Resource;
  8 +import org.springframework.stereotype.Service;
  9 +import org.springframework.validation.annotation.Validated;
  10 +
  11 +import java.util.List;
  12 +
  13 +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  14 +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
  15 +
  16 +// TODO @AI:注释;
  17 +@Service
  18 +@Validated
  19 +public class MesMdWorkstationWorkerServiceImpl implements MesMdWorkstationWorkerService {
  20 +
  21 + @Resource
  22 + private MesMdWorkstationWorkerMapper workstationWorkerMapper;
  23 +
  24 + @Override
  25 + public Long createWorkstationWorker(MesMdWorkstationWorkerSaveReqVO createReqVO) {
  26 + // 校验同一工位下岗位不重复
  27 + MesMdWorkstationWorkerDO existing = workstationWorkerMapper.selectByWorkstationIdAndPostId(
  28 + createReqVO.getWorkstationId(), createReqVO.getPostId());
  29 + if (existing != null) {
  30 + throw exception(MD_WORKSTATION_WORKER_POST_EXISTS);
  31 + }
  32 +
  33 + MesMdWorkstationWorkerDO worker = BeanUtils.toBean(createReqVO, MesMdWorkstationWorkerDO.class);
  34 + workstationWorkerMapper.insert(worker);
  35 + return worker.getId();
  36 + }
  37 +
  38 + @Override
  39 + public void updateWorkstationWorker(MesMdWorkstationWorkerSaveReqVO updateReqVO) {
  40 + if (workstationWorkerMapper.selectById(updateReqVO.getId()) == null) {
  41 + throw exception(MD_WORKSTATION_WORKER_NOT_EXISTS);
  42 + }
  43 + MesMdWorkstationWorkerDO updateObj = BeanUtils.toBean(updateReqVO, MesMdWorkstationWorkerDO.class);
  44 + workstationWorkerMapper.updateById(updateObj);
  45 + }
  46 +
  47 + @Override
  48 + public void deleteWorkstationWorker(Long id) {
  49 + if (workstationWorkerMapper.selectById(id) == null) {
  50 + throw exception(MD_WORKSTATION_WORKER_NOT_EXISTS);
  51 + }
  52 + workstationWorkerMapper.deleteById(id);
  53 + }
  54 +
  55 + @Override
  56 + public List<MesMdWorkstationWorkerDO> getWorkstationWorkerListByWorkstationId(Long workstationId) {
  57 + return workstationWorkerMapper.selectListByWorkstationId(workstationId);
  58 + }
  59 +
  60 +}