From 1f91bafe6ae6f1d628d9e55e28b30785e6990666 Mon Sep 17 00:00:00 2001 From: chenshuichuan <1154693969@qq.com> Date: Sat, 29 Jun 2024 14:27:49 +0800 Subject: [PATCH] add org worker record --- sql/mysql/mesdata.sql | 23 +++ .../module/mes/enums/ErrorCodeConstants.java | 1 + .../machine/MachineComponentController.java | 14 +- .../machine/vo/MachineComponentListReqVO.java | 3 + .../organization/OrganizationController.java | 4 +- .../organization/vo/OrganizationRespVO.java | 5 +- .../admin/orgworker/OrgWorkerController.java | 95 +++++++++++ .../orgworker/vo/OrgWorkerPageReqVO.java | 38 +++++ .../admin/orgworker/vo/OrgWorkerRespVO.java | 47 ++++++ .../orgworker/vo/OrgWorkerSaveReqVO.java | 36 +++++ .../dal/dataobject/orgworker/OrgWorkerDO.java | 54 +++++++ .../mysql/machine/MachineComponentMapper.java | 1 + .../organization/OrganizationMapper.java | 7 +- .../dal/mysql/orgworker/OrgWorkerMapper.java | 31 ++++ .../machine/MachineComponentService.java | 12 ++ .../machine/MachineComponentServiceImpl.java | 11 +- .../organization/OrganizationService.java | 3 +- .../organization/OrganizationServiceImpl.java | 24 +++ .../service/orgworker/OrgWorkerService.java | 55 +++++++ .../orgworker/OrgWorkerServiceImpl.java | 74 +++++++++ .../mapper/orgworker/OrgWorkerMapper.xml | 12 ++ .../orgworker/OrgWorkerServiceImplTest.java | 150 ++++++++++++++++++ .../src/test/resources/sql/clean.sql | 4 +- .../src/test/resources/sql/create_tables.sql | 18 +++ 24 files changed, 712 insertions(+), 10 deletions(-) create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/OrgWorkerController.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/vo/OrgWorkerPageReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/vo/OrgWorkerRespVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/vo/OrgWorkerSaveReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/orgworker/OrgWorkerDO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/orgworker/OrgWorkerMapper.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/orgworker/OrgWorkerService.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/orgworker/OrgWorkerServiceImpl.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/orgworker/OrgWorkerMapper.xml create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/orgworker/OrgWorkerServiceImplTest.java diff --git a/sql/mysql/mesdata.sql b/sql/mysql/mesdata.sql index 07b2373360..230140d504 100644 --- a/sql/mysql/mesdata.sql +++ b/sql/mysql/mesdata.sql @@ -295,3 +295,26 @@ CREATE TABLE `mes_stock_in_detail` DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC COMMENT ='生产入库分配明细'; + + +CREATE TABLE `mes_org_worker` +( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', + `org_id` bigint DEFAULT NULL COMMENT '工位id', + `work_date` datetime NOT NULL DEFAULT NULL COMMENT '工作日期', + `group_type` int DEFAULT NULL COMMENT '1白班/2夜班', + `worker_id` bigint DEFAULT NULL COMMENT '工人id', + `report_id` bigint DEFAULT NULL COMMENT '报工单id', + + `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci 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 NOT NULL DEFAULT '0' COMMENT '租户编号', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB + AUTO_INCREMENT = 2 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_unicode_ci + ROW_FORMAT = DYNAMIC COMMENT ='工位安排表'; diff --git a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index f5c762ed89..bb2e3fcf45 100644 --- a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -57,4 +57,5 @@ public interface ErrorCodeConstants { ErrorCode STOCK_IN_DETAIL_NOT_EXISTS = new ErrorCode(5_0082, "生产入库分配计划不存在"); ErrorCode ERROR_RECORD_NOT_EXISTS = new ErrorCode(5_0082, "投错误记录不存在"); + ErrorCode ORG_WORKER_NOT_EXISTS = new ErrorCode(5_0083, "工位安排不存在"); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/machine/MachineComponentController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/machine/MachineComponentController.java index b233e4b489..976723738b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/machine/MachineComponentController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/machine/MachineComponentController.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.mes.controller.admin.machine.vo.MachineComponentListReqVO; import cn.iocoder.yudao.module.mes.controller.admin.machine.vo.MachineComponentRespVO; import cn.iocoder.yudao.module.mes.controller.admin.machine.vo.MachineComponentSaveReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.machine.vo.MachineTypeEnum; import cn.iocoder.yudao.module.mes.dal.dataobject.machine.MachineComponentDO; import cn.iocoder.yudao.module.mes.service.machine.MachineComponentService; import io.swagger.v3.oas.annotations.Operation; @@ -20,6 +21,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; @@ -74,7 +76,17 @@ public class MachineComponentController { List list = machineComponentService.getMachineComponentList(listReqVO); return success(BeanUtils.toBean(list, MachineComponentRespVO.class)); } - + @GetMapping("/listPipelineAndMachine") + @Operation(summary = "获得产线和机台列表") + public CommonResult> listPipelineAndMachine(@Valid MachineComponentListReqVO listReqVO) { + List listTypes = new ArrayList<>(); + listTypes.add(MachineTypeEnum.产线.getValue()); + listTypes.add(MachineTypeEnum.机台.getValue()); + listReqVO.setComponentTypes(listTypes); + listReqVO.setComponentType(null); + List list = machineComponentService.getMachineComponentList(listReqVO); + return success(BeanUtils.toBean(list, MachineComponentRespVO.class)); + } @GetMapping("/export-excel") @Operation(summary = "导出机台 Excel") @PreAuthorize("@ss.hasPermission('mes:machine-component:export')") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/machine/vo/MachineComponentListReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/machine/vo/MachineComponentListReqVO.java index c7cde4915d..e04759bc24 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/machine/vo/MachineComponentListReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/machine/vo/MachineComponentListReqVO.java @@ -5,6 +5,7 @@ import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; +import java.util.List; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -58,4 +59,6 @@ public class MachineComponentListReqVO { @Schema(description = "机台类型", example = "1") private String machineType; + @Schema(description = "组织类型", example = "1") + private List componentTypes; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/organization/OrganizationController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/organization/OrganizationController.java index c987132f92..0b598c343f 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/organization/OrganizationController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/organization/OrganizationController.java @@ -72,7 +72,7 @@ public class OrganizationController { @PreAuthorize("@ss.hasPermission('mes:organization:query')") public CommonResult> getOrganizationList(@Valid OrganizationListReqVO listReqVO) { List list = organizationService.getOrganizationList(listReqVO); - return success(BeanUtils.toBean(list, OrganizationRespVO.class)); + return success(organizationService.buildVOList(list)); } @GetMapping("/export-excel") @@ -84,7 +84,7 @@ public class OrganizationController { List list = organizationService.getOrganizationList(listReqVO); // 导出 Excel ExcelUtils.write(response, "产线工位.xls", "数据", OrganizationRespVO.class, - BeanUtils.toBean(list, OrganizationRespVO.class)); + organizationService.buildVOList(list)); } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/organization/vo/OrganizationRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/organization/vo/OrganizationRespVO.java index c810f847a2..2cf29c4e53 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/organization/vo/OrganizationRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/organization/vo/OrganizationRespVO.java @@ -36,9 +36,12 @@ public class OrganizationRespVO { private Long workerUserId; @Schema(description = "对应机台id", example = "17654") - @ExcelProperty("对应机台id") private Long machineId; + @Schema(description = "对应机台id", example = "17654") + @ExcelProperty("对应机台") + private String machineName; + @Schema(description = "联系电话") @ExcelProperty("联系电话") private String phone; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/OrgWorkerController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/OrgWorkerController.java new file mode 100644 index 0000000000..70e7b9689c --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/OrgWorkerController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.mes.controller.admin.orgworker; + +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 cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.mes.controller.admin.orgworker.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.orgworker.OrgWorkerDO; +import cn.iocoder.yudao.module.mes.service.orgworker.OrgWorkerService; + +@Tag(name = "管理后台 - 工位安排") +@RestController +@RequestMapping("/mes/org-worker") +@Validated +public class OrgWorkerController { + + @Resource + private OrgWorkerService orgWorkerService; + + @PostMapping("/create") + @Operation(summary = "创建工位安排") + @PreAuthorize("@ss.hasPermission('mes:org-worker:create')") + public CommonResult createOrgWorker(@Valid @RequestBody OrgWorkerSaveReqVO createReqVO) { + return success(orgWorkerService.createOrgWorker(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新工位安排") + @PreAuthorize("@ss.hasPermission('mes:org-worker:update')") + public CommonResult updateOrgWorker(@Valid @RequestBody OrgWorkerSaveReqVO updateReqVO) { + orgWorkerService.updateOrgWorker(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除工位安排") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:org-worker:delete')") + public CommonResult deleteOrgWorker(@RequestParam("id") Long id) { + orgWorkerService.deleteOrgWorker(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得工位安排") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:org-worker:query')") + public CommonResult getOrgWorker(@RequestParam("id") Long id) { + OrgWorkerDO orgWorker = orgWorkerService.getOrgWorker(id); + return success(BeanUtils.toBean(orgWorker, OrgWorkerRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得工位安排分页") + @PreAuthorize("@ss.hasPermission('mes:org-worker:query')") + public CommonResult> getOrgWorkerPage(@Valid OrgWorkerPageReqVO pageReqVO) { + PageResult pageResult = orgWorkerService.getOrgWorkerPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, OrgWorkerRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出工位安排 Excel") + @PreAuthorize("@ss.hasPermission('mes:org-worker:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportOrgWorkerExcel(@Valid OrgWorkerPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = orgWorkerService.getOrgWorkerPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "工位安排.xls", "数据", OrgWorkerRespVO.class, + BeanUtils.toBean(list, OrgWorkerRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/vo/OrgWorkerPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/vo/OrgWorkerPageReqVO.java new file mode 100644 index 0000000000..16d5399d45 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/vo/OrgWorkerPageReqVO.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.mes.controller.admin.orgworker.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 工位安排分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class OrgWorkerPageReqVO extends PageParam { + + @Schema(description = "工位id", example = "4727") + private Long orgId; + + @Schema(description = "工作日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] workDate; + + @Schema(description = "班别", example = "2") + private Integer groupType; + + @Schema(description = "工人id", example = "2095") + private Long workerId; + + @Schema(description = "报工单id", example = "5496") + private Long reportId; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/vo/OrgWorkerRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/vo/OrgWorkerRespVO.java new file mode 100644 index 0000000000..e10edc65e9 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/vo/OrgWorkerRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.mes.controller.admin.orgworker.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 cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 工位安排 Response VO") +@Data +@ExcelIgnoreUnannotated +public class OrgWorkerRespVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2158") + @ExcelProperty("id") + private Long id; + + @Schema(description = "工位id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4727") + @ExcelProperty("工位id") + private Long orgId; + + @Schema(description = "工作日期", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工作日期") + private LocalDateTime workDate; + + @Schema(description = "班别", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty(value = "班别", converter = DictConvert.class) + @DictFormat("mes_group_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer groupType; + + @Schema(description = "工人id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2095") + @ExcelProperty("工人id") + private Long workerId; + + @Schema(description = "报工单id", example = "5496") + @ExcelProperty("报工单id") + private Long reportId; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/vo/OrgWorkerSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/vo/OrgWorkerSaveReqVO.java new file mode 100644 index 0000000000..f6a8b435fc --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/orgworker/vo/OrgWorkerSaveReqVO.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.mes.controller.admin.orgworker.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 工位安排新增/修改 Request VO") +@Data +public class OrgWorkerSaveReqVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2158") + private Long id; + + @Schema(description = "工位id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4727") + @NotNull(message = "工位id不能为空") + private Long orgId; + + @Schema(description = "工作日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "工作日期不能为空") + private LocalDateTime workDate; + + @Schema(description = "班别", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotNull(message = "班别不能为空") + private Integer groupType; + + @Schema(description = "工人id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2095") + @NotNull(message = "工人id不能为空") + private Long workerId; + + @Schema(description = "报工单id", example = "5496") + private Long reportId; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/orgworker/OrgWorkerDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/orgworker/OrgWorkerDO.java new file mode 100644 index 0000000000..9c79df0176 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/orgworker/OrgWorkerDO.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.orgworker; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 工位安排 DO + * + * @author 内蒙必硕 + */ +@TableName("mes_org_worker") +@KeySequence("mes_org_worker_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OrgWorkerDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 工位id + */ + private Long orgId; + /** + * 工作日期 + */ + private LocalDateTime workDate; + /** + * 班别 + * + * 枚举 {@link TODO mes_group_type 对应的类} + */ + private Integer groupType; + /** + * 工人id + */ + private Long workerId; + /** + * 报工单id + */ + private Long reportId; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/machine/MachineComponentMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/machine/MachineComponentMapper.java index cd7abf2af2..c7a8cd68ca 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/machine/MachineComponentMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/machine/MachineComponentMapper.java @@ -31,6 +31,7 @@ public interface MachineComponentMapper extends BaseMapperX .betweenIfPresent(MachineComponentDO::getCreateTime, reqVO.getCreateTime()) .eqIfPresent(MachineComponentDO::getStatus, reqVO.getStatus()) .eqIfPresent(MachineComponentDO::getComponentType, reqVO.getComponentType()) + .inIfPresent(MachineComponentDO::getComponentType, reqVO.getComponentTypes()) .eqIfPresent(MachineComponentDO::getMachineType, reqVO.getMachineType()) .orderByDesc(MachineComponentDO::getId)); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/organization/OrganizationMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/organization/OrganizationMapper.java index b9a523948e..ec2f61933b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/organization/OrganizationMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/organization/OrganizationMapper.java @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrganizationListReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO; +import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -28,8 +29,12 @@ public interface OrganizationMapper extends BaseMapperX { .eqIfPresent(OrganizationDO::getIsEnable, reqVO.getIsEnable()) .eqIfPresent(OrganizationDO::getStatus, reqVO.getStatus()) .eqIfPresent(OrganizationDO::getOrgClass, reqVO.getOrgClass()) - .eqIfPresent(OrganizationDO::getOrgType, reqVO.getOrgType()) .betweenIfPresent(OrganizationDO::getCreateTime, reqVO.getCreateTime()) + //查询工序类型时把父级类型也查上,工厂,车间,产线等父级类型一般为空 + .and(!StringUtils.isEmpty(reqVO.getOrgType()), + i -> i.eq(OrganizationDO::getOrgType,reqVO.getOrgType()) + .or().isNull(OrganizationDO::getOrgType) + ) .orderByAsc(OrganizationDO::getSort)); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/orgworker/OrgWorkerMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/orgworker/OrgWorkerMapper.java new file mode 100644 index 0000000000..3bf4dad047 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/orgworker/OrgWorkerMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.orgworker; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.mes.dal.dataobject.orgworker.OrgWorkerDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.mes.controller.admin.orgworker.vo.*; + +/** + * 工位安排 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface OrgWorkerMapper extends BaseMapperX { + + default PageResult selectPage(OrgWorkerPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(OrgWorkerDO::getOrgId, reqVO.getOrgId()) + .betweenIfPresent(OrgWorkerDO::getWorkDate, reqVO.getWorkDate()) + .eqIfPresent(OrgWorkerDO::getGroupType, reqVO.getGroupType()) + .eqIfPresent(OrgWorkerDO::getWorkerId, reqVO.getWorkerId()) + .eqIfPresent(OrgWorkerDO::getReportId, reqVO.getReportId()) + .betweenIfPresent(OrgWorkerDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(OrgWorkerDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/machine/MachineComponentService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/machine/MachineComponentService.java index 9d68a836e9..311186bdcc 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/machine/MachineComponentService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/machine/MachineComponentService.java @@ -1,11 +1,16 @@ package cn.iocoder.yudao.module.mes.service.machine; +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.module.mes.controller.admin.machine.vo.MachineComponentListReqVO; import cn.iocoder.yudao.module.mes.controller.admin.machine.vo.MachineComponentSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.machine.MachineComponentDO; import javax.validation.Valid; +import java.util.Collection; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 机台 Service 接口 @@ -52,4 +57,11 @@ public interface MachineComponentService { */ List getMachineComponentList(MachineComponentListReqVO listReqVO); + List getList(Collection ids); + default Map getMap(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return new HashMap<>(); + } + return CollectionUtils.convertMap(getList(ids), MachineComponentDO::getId); + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/machine/MachineComponentServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/machine/MachineComponentServiceImpl.java index d6175d3aae..f943691750 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/machine/MachineComponentServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/machine/MachineComponentServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.mes.service.machine; +import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.machine.vo.MachineComponentListReqVO; import cn.iocoder.yudao.module.mes.controller.admin.machine.vo.MachineComponentSaveReqVO; @@ -12,6 +13,8 @@ import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Objects; @@ -149,5 +152,11 @@ public class MachineComponentServiceImpl implements MachineComponentService { public List getMachineComponentList(MachineComponentListReqVO listReqVO) { return machineComponentMapper.selectList(listReqVO); } - + @Override + public List getList(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return Collections.emptyList(); + } + return machineComponentMapper.selectBatchIds(ids); + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationService.java index c098fd8385..b20e6d579a 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.mes.service.organization; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrganizationListReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrganizationRespVO; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrganizationSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO; @@ -51,5 +52,5 @@ public interface OrganizationService { * @return 产线工位列表 */ List getOrganizationList(OrganizationListReqVO listReqVO); - + List buildVOList(List list); } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java index 90e6d4bdf5..580c96ad17 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/organization/OrganizationServiceImpl.java @@ -1,21 +1,29 @@ package cn.iocoder.yudao.module.mes.service.organization; +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrgClassEnum; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrganizationListReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrganizationRespVO; import cn.iocoder.yudao.module.mes.controller.admin.organization.vo.OrganizationSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.machine.MachineComponentDO; import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO; import cn.iocoder.yudao.module.mes.dal.mysql.organization.OrganizationMapper; import cn.iocoder.yudao.module.mes.dal.redis.no.MesNoRedisDAO; +import cn.iocoder.yudao.module.mes.service.machine.MachineComponentService; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Objects; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.PURCHASE_ORDER_NO_EXISTS; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; @@ -145,5 +153,21 @@ public class OrganizationServiceImpl implements OrganizationService { public List getOrganizationList(OrganizationListReqVO listReqVO) { return organizationMapper.selectList(listReqVO); } + @Resource + public MachineComponentService machineComponentService; + + @Override + public List buildVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + Map map = machineComponentService.getMap( + convertSet(list, OrganizationDO::getMachineId)); + + return BeanUtils.toBean(list, OrganizationRespVO.class, item -> { + MapUtils.findAndThen(map, item.getMachineId(), + machine -> item.setMachineName(machine.getName())); + }); + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/orgworker/OrgWorkerService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/orgworker/OrgWorkerService.java new file mode 100644 index 0000000000..3f6c27b965 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/orgworker/OrgWorkerService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.mes.service.orgworker; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.mes.controller.admin.orgworker.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.orgworker.OrgWorkerDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 工位安排 Service 接口 + * + * @author 内蒙必硕 + */ +public interface OrgWorkerService { + + /** + * 创建工位安排 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createOrgWorker(@Valid OrgWorkerSaveReqVO createReqVO); + + /** + * 更新工位安排 + * + * @param updateReqVO 更新信息 + */ + void updateOrgWorker(@Valid OrgWorkerSaveReqVO updateReqVO); + + /** + * 删除工位安排 + * + * @param id 编号 + */ + void deleteOrgWorker(Long id); + + /** + * 获得工位安排 + * + * @param id 编号 + * @return 工位安排 + */ + OrgWorkerDO getOrgWorker(Long id); + + /** + * 获得工位安排分页 + * + * @param pageReqVO 分页查询 + * @return 工位安排分页 + */ + PageResult getOrgWorkerPage(OrgWorkerPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/orgworker/OrgWorkerServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/orgworker/OrgWorkerServiceImpl.java new file mode 100644 index 0000000000..fb1dd241fe --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/orgworker/OrgWorkerServiceImpl.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.mes.service.orgworker; + +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 cn.iocoder.yudao.module.mes.controller.admin.orgworker.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.orgworker.OrgWorkerDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.mes.dal.mysql.orgworker.OrgWorkerMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; + +/** + * 工位安排 Service 实现类 + * + * @author 内蒙必硕 + */ +@Service +@Validated +public class OrgWorkerServiceImpl implements OrgWorkerService { + + @Resource + private OrgWorkerMapper orgWorkerMapper; + + @Override + public Long createOrgWorker(OrgWorkerSaveReqVO createReqVO) { + // 插入 + OrgWorkerDO orgWorker = BeanUtils.toBean(createReqVO, OrgWorkerDO.class); + orgWorkerMapper.insert(orgWorker); + // 返回 + return orgWorker.getId(); + } + + @Override + public void updateOrgWorker(OrgWorkerSaveReqVO updateReqVO) { + // 校验存在 + validateOrgWorkerExists(updateReqVO.getId()); + // 更新 + OrgWorkerDO updateObj = BeanUtils.toBean(updateReqVO, OrgWorkerDO.class); + orgWorkerMapper.updateById(updateObj); + } + + @Override + public void deleteOrgWorker(Long id) { + // 校验存在 + validateOrgWorkerExists(id); + // 删除 + orgWorkerMapper.deleteById(id); + } + + private void validateOrgWorkerExists(Long id) { + if (orgWorkerMapper.selectById(id) == null) { + throw exception(ORG_WORKER_NOT_EXISTS); + } + } + + @Override + public OrgWorkerDO getOrgWorker(Long id) { + return orgWorkerMapper.selectById(id); + } + + @Override + public PageResult getOrgWorkerPage(OrgWorkerPageReqVO pageReqVO) { + return orgWorkerMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/orgworker/OrgWorkerMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/orgworker/OrgWorkerMapper.xml new file mode 100644 index 0000000000..a13635d4e1 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/orgworker/OrgWorkerMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/orgworker/OrgWorkerServiceImplTest.java b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/orgworker/OrgWorkerServiceImplTest.java new file mode 100644 index 0000000000..86ee66a95e --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/test/java/cn/iocoder/yudao/module/mes/service/orgworker/OrgWorkerServiceImplTest.java @@ -0,0 +1,150 @@ +package cn.iocoder.yudao.module.mes.service.orgworker; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.mock.mockito.MockBean; + +import javax.annotation.Resource; + +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; + +import cn.iocoder.yudao.module.mes.controller.admin.orgworker.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.orgworker.OrgWorkerDO; +import cn.iocoder.yudao.module.mes.dal.mysql.orgworker.OrgWorkerMapper; +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import javax.annotation.Resource; +import org.springframework.context.annotation.Import; +import java.util.*; +import java.time.LocalDateTime; + +import static cn.hutool.core.util.RandomUtil.*; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; +import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*; +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link OrgWorkerServiceImpl} 的单元测试类 + * + * @author 内蒙必硕 + */ +@Import(OrgWorkerServiceImpl.class) +public class OrgWorkerServiceImplTest extends BaseDbUnitTest { + + @Resource + private OrgWorkerServiceImpl orgWorkerService; + + @Resource + private OrgWorkerMapper orgWorkerMapper; + + @Test + public void testCreateOrgWorker_success() { + // 准备参数 + OrgWorkerSaveReqVO createReqVO = randomPojo(OrgWorkerSaveReqVO.class).setId(null); + + // 调用 + Long orgWorkerId = orgWorkerService.createOrgWorker(createReqVO); + // 断言 + assertNotNull(orgWorkerId); + // 校验记录的属性是否正确 + OrgWorkerDO orgWorker = orgWorkerMapper.selectById(orgWorkerId); + assertPojoEquals(createReqVO, orgWorker, "id"); + } + + @Test + public void testUpdateOrgWorker_success() { + // mock 数据 + OrgWorkerDO dbOrgWorker = randomPojo(OrgWorkerDO.class); + orgWorkerMapper.insert(dbOrgWorker);// @Sql: 先插入出一条存在的数据 + // 准备参数 + OrgWorkerSaveReqVO updateReqVO = randomPojo(OrgWorkerSaveReqVO.class, o -> { + o.setId(dbOrgWorker.getId()); // 设置更新的 ID + }); + + // 调用 + orgWorkerService.updateOrgWorker(updateReqVO); + // 校验是否更新正确 + OrgWorkerDO orgWorker = orgWorkerMapper.selectById(updateReqVO.getId()); // 获取最新的 + assertPojoEquals(updateReqVO, orgWorker); + } + + @Test + public void testUpdateOrgWorker_notExists() { + // 准备参数 + OrgWorkerSaveReqVO updateReqVO = randomPojo(OrgWorkerSaveReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> orgWorkerService.updateOrgWorker(updateReqVO), ORG_WORKER_NOT_EXISTS); + } + + @Test + public void testDeleteOrgWorker_success() { + // mock 数据 + OrgWorkerDO dbOrgWorker = randomPojo(OrgWorkerDO.class); + orgWorkerMapper.insert(dbOrgWorker);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbOrgWorker.getId(); + + // 调用 + orgWorkerService.deleteOrgWorker(id); + // 校验数据不存在了 + assertNull(orgWorkerMapper.selectById(id)); + } + + @Test + public void testDeleteOrgWorker_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> orgWorkerService.deleteOrgWorker(id), ORG_WORKER_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetOrgWorkerPage() { + // mock 数据 + OrgWorkerDO dbOrgWorker = randomPojo(OrgWorkerDO.class, o -> { // 等会查询到 + o.setOrgId(null); + o.setWorkDate(null); + o.setGroupType(null); + o.setWorkerId(null); + o.setReportId(null); + o.setCreateTime(null); + }); + orgWorkerMapper.insert(dbOrgWorker); + // 测试 orgId 不匹配 + orgWorkerMapper.insert(cloneIgnoreId(dbOrgWorker, o -> o.setOrgId(null))); + // 测试 workDate 不匹配 + orgWorkerMapper.insert(cloneIgnoreId(dbOrgWorker, o -> o.setWorkDate(null))); + // 测试 groupType 不匹配 + orgWorkerMapper.insert(cloneIgnoreId(dbOrgWorker, o -> o.setGroupType(null))); + // 测试 workerId 不匹配 + orgWorkerMapper.insert(cloneIgnoreId(dbOrgWorker, o -> o.setWorkerId(null))); + // 测试 reportId 不匹配 + orgWorkerMapper.insert(cloneIgnoreId(dbOrgWorker, o -> o.setReportId(null))); + // 测试 createTime 不匹配 + orgWorkerMapper.insert(cloneIgnoreId(dbOrgWorker, o -> o.setCreateTime(null))); + // 准备参数 + OrgWorkerPageReqVO reqVO = new OrgWorkerPageReqVO(); + reqVO.setOrgId(null); + reqVO.setWorkDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setGroupType(null); + reqVO.setWorkerId(null); + reqVO.setReportId(null); + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = orgWorkerService.getOrgWorkerPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbOrgWorker, pageResult.getList().get(0)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/clean.sql b/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/clean.sql index 2f9038f13c..5ff59b7b2e 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/clean.sql +++ b/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/clean.sql @@ -39,13 +39,11 @@ DELETE FROM "mes_feeding_record_plan"; -- 将该删表 SQL 语句,添加到 yudao-module-mes-biz 模块的 test/resources/sql/clean.sql 文件里 DELETE FROM "mes_feeding_record_detail"; --- 将该删表 SQL 语句,添加到 yudao-module-mes-biz 模块的 test/resources/sql/clean.sql 文件里 DELETE FROM "mes_error_record"; -- 将该删表 SQL 语句,添加到 yudao-module-mes-biz 模块的 test/resources/sql/clean.sql 文件里 DELETE FROM "mes_stock_in_detail"; - - +DELETE FROM "mes_org_worker"; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/create_tables.sql b/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/create_tables.sql index d6879801cc..a90cfdf956 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/create_tables.sql +++ b/yudao-module-mes/yudao-module-mes-biz/src/test/resources/sql/create_tables.sql @@ -466,3 +466,21 @@ CREATE TABLE IF NOT EXISTS "mes_stock_in_detail" PRIMARY KEY ("id") ) COMMENT '生产入库分配明细'; + +CREATE TABLE IF NOT EXISTS "mes_org_worker" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "org_id" bigint NOT NULL, + "work_date" varchar NOT NULL, + "group_type" int NOT NULL, + "worker_id" bigint NOT NULL, + "report_id" bigint, + "creator" varchar DEFAULT '', + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar DEFAULT '', + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + "tenant_id" bigint NULL, + PRIMARY KEY ("id") +) COMMENT '工位安排表'; +