add report

plp
chenshuichuan 2 years ago
parent 7bf09e7da1
commit 6d9be1cd27

@ -161,8 +161,8 @@ CREATE TABLE `mes_task`
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
`code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT '编码',
`order_date` date COMMENT '创建时间',
`delivery_date` date COMMENT '创建时间',
`order_date` datetime COMMENT '下达时间',
`delivery_date` datetime COMMENT '交付时间',
`status` tinyint DEFAULT '0' COMMENT '状态',
`process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '流程实例的编号',
@ -183,11 +183,16 @@ CREATE TABLE `mes_task_detail`
`product_id` bigint NOT NULL COMMENT '产品ID',
`unit_id` bigint NOT NULL COMMENT '单位ID',
`task_id` bigint NOT NULL COMMENT 'task ID',
`number` bigint NOT NULL COMMENT '数量',
`package_size` bigint NOT NULL COMMENT '打包要求(每包/个)',
`number` bigint NOT NULL COMMENT '数量/个',
`package_number` bigint NOT NULL COMMENT '数量/包',
`package_size` bigint DEFAULT NULL COMMENT '打包要求(每包/个)',
`finish_date` datetime COMMENT '工厂完成',
`boxing_date` datetime COMMENT '装柜时间',
`arrive_date` datetime COMMENT '到达时间',
`project_name` varchar(56) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '项目名称',
`tech_requirements` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '技术要求',
`bar_code` varchar(56) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '条码',
`attachment` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '附件',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '备注',
`is_enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否启用',

@ -1,14 +1,49 @@
CREATE TABLE `mes_item_requisition`
CREATE TABLE `mes_work_team`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
`team_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '班组名称',
`team_leader_id` bigint NOT NULL COMMENT '组长ID',
`team_type` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '工序类型',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '备注',
`is_enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否启用',
`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 DEFAULT NULL COMMENT '租户id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=91 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='生产报工单';
CREATE TABLE `mes_work_team_detail`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
`work_team_id` bigint DEFAULT NULL COMMENT '班组id',
`user_id` bigint NOT NULL COMMENT '用户ID',
`code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT '编码',
`requisition_date` date COMMENT '下料时间',
`delivery_date` date COMMENT '创建时间',
`status` tinyint DEFAULT '0' COMMENT '状态',
`user_role` tinyint NOT NULL COMMENT '角色',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '备注',
`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 DEFAULT NULL COMMENT '租户id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=91 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='生产报工明细';
CREATE TABLE `mes_produce_report`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
`process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '流程实例的编号',
`plan_id` bigint NOT NULL COMMENT '计划ID',
`work_team_id` bigint NOT NULL COMMENT '组别ID',
`group_id` bigint NOT NULL COMMENT '班组ID',
`report_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '报工日期',
`status` tinyint NOT NULL COMMENT '状态',
`group_type` tinyint NOT NULL COMMENT '白班/夜班',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '备注',
`is_enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否启用',
@ -19,16 +54,24 @@ CREATE TABLE `mes_item_requisition`
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint DEFAULT NULL COMMENT '租户id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=91 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='领料';
) ENGINE=InnoDB AUTO_INCREMENT=91 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='生产报工';
CREATE TABLE `mes_item_requisition_detail`
CREATE TABLE `mes_produce_report_detail`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
`report_id` bigint DEFAULT NULL COMMENT '报工单id',
`plan_id` bigint NOT NULL COMMENT '生产计划ID',
`product_id` bigint NOT NULL COMMENT '产品ID',
`unit_id` bigint NOT NULL COMMENT '单位ID',
`item_requisition_id` bigint NOT NULL COMMENT '领料单ID',
`number` decimal(24, 6) DEFAULT NULL COMMENT '数量',
`user_id` bigint NOT NULL COMMENT '用户ID',
`org_id` bigint NOT NULL COMMENT '组织ID',
`quality_number` decimal(24, 6) DEFAULT NULL COMMENT '成品数量',
`waste_number` decimal(24, 6) DEFAULT NULL COMMENT '废品数量',
`total_number` decimal(24, 6) DEFAULT NULL COMMENT '废品数量',
`quality_rate` decimal(24, 6) DEFAULT NULL COMMENT '成品率',
`waste_reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '备注',
`report_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '计件时间',
`total_time` decimal(24, 6) DEFAULT NULL COMMENT '总时长',
`package_number` decimal(24, 6) DEFAULT NULL COMMENT '打包数量',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '备注',
`is_enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否启用',
`creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
@ -38,6 +81,6 @@ CREATE TABLE `mes_item_requisition_detail`
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint DEFAULT NULL COMMENT '租户id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=91 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='领料单明细';
) ENGINE=InnoDB AUTO_INCREMENT=91 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='生产报工明细';

@ -32,4 +32,10 @@ public interface ErrorCodeConstants {
ErrorCode RECORD_GANZAO_NOT_EXISTS = new ErrorCode(5_0067, "干燥记录不存在");
ErrorCode RECORD_JIASHI_NOT_EXISTS = new ErrorCode(5_0068, "加湿记录不存在");
ErrorCode RECORD_PINJIAN_NOT_EXISTS = new ErrorCode(5_0069, "品检记录不存在");
ErrorCode WORK_TEAM_NOT_EXISTS = new ErrorCode(5_007, "生产班组不存在");
ErrorCode WORK_TEAM_DETAIL_NOT_EXISTS = new ErrorCode(5_0071, "班组成员不存在");
ErrorCode PRODUCE_REPORT_NOT_EXISTS = new ErrorCode(5_008, "生产报工单不存在");
ErrorCode PRODUCE_REPORT_DETAIL_NOT_EXISTS = new ErrorCode(5_0081, "生产报工明细不存在");
}

@ -0,0 +1,137 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereport;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDetailDO;
import cn.iocoder.yudao.module.mes.service.producereport.ProduceReportService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
@Tag(name = "管理后台 - 生产报工单")
@RestController
@RequestMapping("/mes/produce-report")
@Validated
public class ProduceReportController {
@Resource
private ProduceReportService produceReportService;
@PostMapping("/create")
@Operation(summary = "创建生产报工单")
@PreAuthorize("@ss.hasPermission('mes:produce-report:create')")
public CommonResult<Long> createProduceReport(@Valid @RequestBody ProduceReportSaveReqVO createReqVO) {
return success(produceReportService.createProduceReport(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新生产报工单")
@PreAuthorize("@ss.hasPermission('mes:produce-report:update')")
public CommonResult<Boolean> updateProduceReport(@Valid @RequestBody ProduceReportSaveReqVO updateReqVO) {
produceReportService.updateProduceReport(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除生产报工单")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:produce-report:delete')")
public CommonResult<Boolean> deleteProduceReport(@RequestParam("id") Long id) {
produceReportService.deleteProduceReport(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得生产报工单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:produce-report:query')")
public CommonResult<ProduceReportRespVO> getProduceReport(@RequestParam("id") Long id) {
ProduceReportDO produceReport = produceReportService.getProduceReport(id);
return success(BeanUtils.toBean(produceReport, ProduceReportRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得生产报工单分页")
@PreAuthorize("@ss.hasPermission('mes:produce-report:query')")
public CommonResult<PageResult<ProduceReportRespVO>> getProduceReportPage(@Valid ProduceReportPageReqVO pageReqVO) {
PageResult<ProduceReportDO> pageResult = produceReportService.getProduceReportPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProduceReportRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产报工单 Excel")
@PreAuthorize("@ss.hasPermission('mes:produce-report:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportProduceReportExcel(@Valid ProduceReportPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ProduceReportDO> list = produceReportService.getProduceReportPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "生产报工单.xls", "数据", ProduceReportRespVO.class,
BeanUtils.toBean(list, ProduceReportRespVO.class));
}
// ==================== 子表(生产报工明细) ====================
@GetMapping("/produce-report-detail/page")
@Operation(summary = "获得生产报工明细分页")
@Parameter(name = "reportId", description = "报工单id")
@PreAuthorize("@ss.hasPermission('mes:produce-report:query')")
public CommonResult<PageResult<ProduceReportDetailDO>> getProduceReportDetailPage(PageParam pageReqVO,
@RequestParam("reportId") Long reportId) {
return success(produceReportService.getProduceReportDetailPage(pageReqVO, reportId));
}
@PostMapping("/produce-report-detail/create")
@Operation(summary = "创建生产报工明细")
@PreAuthorize("@ss.hasPermission('mes:produce-report:create')")
public CommonResult<Long> createProduceReportDetail(@Valid @RequestBody ProduceReportDetailDO produceReportDetail) {
return success(produceReportService.createProduceReportDetail(produceReportDetail));
}
@PutMapping("/produce-report-detail/update")
@Operation(summary = "更新生产报工明细")
@PreAuthorize("@ss.hasPermission('mes:produce-report:update')")
public CommonResult<Boolean> updateProduceReportDetail(@Valid @RequestBody ProduceReportDetailDO produceReportDetail) {
produceReportService.updateProduceReportDetail(produceReportDetail);
return success(true);
}
@DeleteMapping("/produce-report-detail/delete")
@Parameter(name = "id", description = "编号", required = true)
@Operation(summary = "删除生产报工明细")
@PreAuthorize("@ss.hasPermission('mes:produce-report:delete')")
public CommonResult<Boolean> deleteProduceReportDetail(@RequestParam("id") Long id) {
produceReportService.deleteProduceReportDetail(id);
return success(true);
}
@GetMapping("/produce-report-detail/get")
@Operation(summary = "获得生产报工明细")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:produce-report:query')")
public CommonResult<ProduceReportDetailDO> getProduceReportDetail(@RequestParam("id") Long id) {
return success(produceReportService.getProduceReportDetail(id));
}
}

@ -0,0 +1,94 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereport;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
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.producereport.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDetailDO;
import cn.iocoder.yudao.module.mes.service.producereport.ProduceReportDetailService;
@Tag(name = "管理后台 - 生产报工明细")
@RestController
@RequestMapping("/mes/produce-report-detail")
@Validated
public class ProduceReportDetailController {
@Resource
private ProduceReportDetailService produceReportDetailService;
@PostMapping("/create")
@Operation(summary = "创建生产报工明细")
@PreAuthorize("@ss.hasPermission('mes:produce-report-detail:create')")
public CommonResult<Long> createProduceReportDetail(@Valid @RequestBody ProduceReportDetailSaveReqVO createReqVO) {
return success(produceReportDetailService.createProduceReportDetail(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新生产报工明细")
@PreAuthorize("@ss.hasPermission('mes:produce-report-detail:update')")
public CommonResult<Boolean> updateProduceReportDetail(@Valid @RequestBody ProduceReportDetailSaveReqVO updateReqVO) {
produceReportDetailService.updateProduceReportDetail(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除生产报工明细")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:produce-report-detail:delete')")
public CommonResult<Boolean> deleteProduceReportDetail(@RequestParam("id") Long id) {
produceReportDetailService.deleteProduceReportDetail(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得生产报工明细")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:produce-report-detail:query')")
public CommonResult<ProduceReportDetailRespVO> getProduceReportDetail(@RequestParam("id") Long id) {
ProduceReportDetailDO produceReportDetail = produceReportDetailService.getProduceReportDetail(id);
return success(BeanUtils.toBean(produceReportDetail, ProduceReportDetailRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得生产报工明细分页")
@PreAuthorize("@ss.hasPermission('mes:produce-report-detail:query')")
public CommonResult<PageResult<ProduceReportDetailRespVO>> getProduceReportDetailPage(@Valid ProduceReportDetailPageReqVO pageReqVO) {
PageResult<ProduceReportDetailDO> pageResult = produceReportDetailService.getProduceReportDetailPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProduceReportDetailRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产报工明细 Excel")
@PreAuthorize("@ss.hasPermission('mes:produce-report-detail:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportProduceReportDetailExcel(@Valid ProduceReportDetailPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ProduceReportDetailDO> list = produceReportDetailService.getProduceReportDetailPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "生产报工明细.xls", "数据", ProduceReportDetailRespVO.class,
BeanUtils.toBean(list, ProduceReportDetailRespVO.class));
}
}

@ -0,0 +1,73 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereport.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import java.math.BigDecimal;
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 ProduceReportDetailPageReqVO extends PageParam {
@Schema(description = "报工单id", example = "10253")
private Long reportId;
@Schema(description = "生产计划ID", example = "22861")
private Long planId;
@Schema(description = "产品ID", example = "14517")
private Long productId;
@Schema(description = "用户ID", example = "23386")
private Long userId;
@Schema(description = "组织ID", example = "1329")
private Long orgId;
@Schema(description = "成品率")
private BigDecimal qualityRate;
@Schema(description = "备注", example = "不好")
private String wasteReason;
@Schema(description = "总时长")
private BigDecimal totalTime;
@Schema(description = "打包数量")
private BigDecimal packageNumber;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "是否启用")
private Boolean isEnable;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "成品数量")
private BigDecimal qualityNumber;
@Schema(description = "废品数量")
private BigDecimal wasteNumber;
@Schema(description = "总数量")
private BigDecimal totalNumber;
@Schema(description = "报工日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] reportDate;
@Schema(description = "报工状态", example = "1")
private Integer reportStatus;
@Schema(description = "计件时间", example = "10:10-12:00,14:10-16:10")
private String reportTime;
}

@ -0,0 +1,96 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereport.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
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 ProduceReportDetailRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15203")
@ExcelProperty("ID")
private Long id;
@Schema(description = "报工单id", example = "10253")
@ExcelProperty("报工单id")
private Long reportId;
@Schema(description = "生产计划ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22861")
@ExcelProperty("生产计划ID")
private Long planId;
@Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14517")
@ExcelProperty("产品ID")
private Long productId;
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23386")
@ExcelProperty("用户ID")
private Long userId;
@Schema(description = "组织ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1329")
@ExcelProperty("组织ID")
private Long orgId;
@Schema(description = "成品率")
@ExcelProperty("成品率")
private BigDecimal qualityRate;
@Schema(description = "备注", example = "不好")
@ExcelProperty("备注")
private String wasteReason;
@Schema(description = "总时长")
@ExcelProperty("总时长")
private BigDecimal totalTime;
@Schema(description = "打包数量")
@ExcelProperty("打包数量")
private BigDecimal packageNumber;
@Schema(description = "备注", example = "你猜")
@ExcelProperty("备注")
private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否启用")
private Boolean isEnable;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "成品数量")
@ExcelProperty("成品数量")
private BigDecimal qualityNumber;
@Schema(description = "废品数量")
@ExcelProperty("废品数量")
private BigDecimal wasteNumber;
@Schema(description = "总数量")
@ExcelProperty("总数量")
private BigDecimal totalNumber;
@Schema(description = "报工日期")
@ExcelProperty("报工日期")
private LocalDateTime reportDate;
@Schema(description = "计件时间")
@ExcelProperty("计件时间")
private String reportTime;
@Schema(description = "报工状态", example = "1")
@ExcelProperty(value = "报工状态", converter = DictConvert.class)
@DictFormat("mes_record_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer reportStatus;
}

@ -0,0 +1,75 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereport.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 生产报工明细新增/修改 Request VO")
@Data
public class ProduceReportDetailSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15203")
private Long id;
@Schema(description = "报工单id", example = "10253")
private Long reportId;
@Schema(description = "生产计划ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22861")
@NotNull(message = "生产计划ID不能为空")
private Long planId;
@Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14517")
@NotNull(message = "产品ID不能为空")
private Long productId;
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23386")
@NotNull(message = "用户ID不能为空")
private Long userId;
@Schema(description = "组织ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1329")
@NotNull(message = "组织ID不能为空")
private Long orgId;
@Schema(description = "成品率")
private BigDecimal qualityRate;
@Schema(description = "备注", example = "不好")
private String wasteReason;
@Schema(description = "总时长")
private BigDecimal totalTime;
@Schema(description = "打包数量")
private BigDecimal packageNumber;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否启用不能为空")
private Boolean isEnable;
@Schema(description = "成品数量")
private BigDecimal qualityNumber;
@Schema(description = "废品数量")
private BigDecimal wasteNumber;
@Schema(description = "总数量")
private BigDecimal totalNumber;
@Schema(description = "报工日期")
private LocalDateTime reportDate;
@Schema(description = "计件时间")
private String reportTime;
@Schema(description = "报工状态", example = "1")
private Integer reportStatus;
}

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereport.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 ProduceReportPageReqVO extends PageParam {
@Schema(description = "流程实例的编号", example = "2975")
private String processInstanceId;
@Schema(description = "组别ID", example = "32137")
private Long workTeamId;
@Schema(description = "班组ID", example = "10669")
private Long groupId;
@Schema(description = "报工日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] reportDate;
@Schema(description = "状态", example = "1")
private Integer status;
@Schema(description = "白班/夜班", example = "1")
private Integer groupType;
@Schema(description = "备注", example = "随便")
private String remark;
@Schema(description = "是否启用")
private Boolean isEnable;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,60 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereport.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 ProduceReportRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6256")
@ExcelProperty("ID")
private Long id;
@Schema(description = "流程实例的编号", example = "2975")
@ExcelProperty("流程实例的编号")
private String processInstanceId;
@Schema(description = "组别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32137")
@ExcelProperty("组别ID")
private Long workTeamId;
@Schema(description = "班组ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10669")
@ExcelProperty("班组ID")
private Long groupId;
@Schema(description = "报工日期", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("报工日期")
private LocalDateTime reportDate;
@Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat("mes_record_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer status;
@Schema(description = "白班/夜班", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty(value = "白班/夜班", converter = DictConvert.class)
@DictFormat("mes_group_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer groupType;
@Schema(description = "备注", example = "随便")
@ExcelProperty("备注")
private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否启用")
private Boolean isEnable;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,48 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereport.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDetailDO;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 生产报工单新增/修改 Request VO")
@Data
public class ProduceReportSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6256")
private Long id;
@Schema(description = "流程实例的编号", example = "2975")
private String processInstanceId;
@Schema(description = "组别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32137")
@NotNull(message = "组别ID不能为空")
private Long workTeamId;
@Schema(description = "班组ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10669")
@NotNull(message = "班组ID不能为空")
private Long groupId;
@Schema(description = "报工日期", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "报工日期不能为空")
private LocalDateTime reportDate;
@Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "状态不能为空")
private Integer status;
@Schema(description = "白班/夜班", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "白班/夜班不能为空")
private Integer groupType;
@Schema(description = "备注", example = "随便")
private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否启用不能为空")
private Boolean isEnable;
}

@ -0,0 +1,139 @@
package cn.iocoder.yudao.module.mes.controller.admin.workteam;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDetailDO;
import cn.iocoder.yudao.module.mes.service.workteam.WorkTeamService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
@Tag(name = "管理后台 - 生产班组")
@RestController
@RequestMapping("/mes/work-team")
@Validated
public class WorkTeamController {
@Resource
private WorkTeamService workTeamService;
@PostMapping("/create")
@Operation(summary = "创建生产班组")
@PreAuthorize("@ss.hasPermission('mes:work-team:create')")
public CommonResult<Long> createWorkTeam(@Valid @RequestBody WorkTeamSaveReqVO createReqVO) {
return success(workTeamService.createWorkTeam(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新生产班组")
@PreAuthorize("@ss.hasPermission('mes:work-team:update')")
public CommonResult<Boolean> updateWorkTeam(@Valid @RequestBody WorkTeamSaveReqVO updateReqVO) {
workTeamService.updateWorkTeam(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除生产班组")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:work-team:delete')")
public CommonResult<Boolean> deleteWorkTeam(@RequestParam("id") Long id) {
workTeamService.deleteWorkTeam(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得生产班组")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:work-team:query')")
public CommonResult<WorkTeamRespVO> getWorkTeam(@RequestParam("id") Long id) {
WorkTeamDO workTeam = workTeamService.getWorkTeam(id);
return success(BeanUtils.toBean(workTeam, WorkTeamRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得生产班组分页")
@PreAuthorize("@ss.hasPermission('mes:work-team:query')")
public CommonResult<PageResult<WorkTeamRespVO>> getWorkTeamPage(@Valid WorkTeamPageReqVO pageReqVO) {
PageResult<WorkTeamDO> pageResult = workTeamService.getWorkTeamPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, WorkTeamRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产班组 Excel")
@PreAuthorize("@ss.hasPermission('mes:work-team:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportWorkTeamExcel(@Valid WorkTeamPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<WorkTeamDO> list = workTeamService.getWorkTeamPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "生产班组.xls", "数据", WorkTeamRespVO.class,
BeanUtils.toBean(list, WorkTeamRespVO.class));
}
// ==================== 子表(班组成员) ====================
@GetMapping("/work-team-detail/page")
@Operation(summary = "获得班组成员分页")
@Parameter(name = "workTeamId", description = "班组id")
@PreAuthorize("@ss.hasPermission('mes:work-team:query')")
public CommonResult<PageResult<WorkTeamDetailDO>> getWorkTeamDetailPage(PageParam pageReqVO,
@RequestParam("workTeamId") Long workTeamId) {
return success(workTeamService.getWorkTeamDetailPage(pageReqVO, workTeamId));
}
@PostMapping("/work-team-detail/create")
@Operation(summary = "创建班组成员")
@PreAuthorize("@ss.hasPermission('mes:work-team:create')")
public CommonResult<Long> createWorkTeamDetail(@Valid @RequestBody WorkTeamDetailDO workTeamDetail) {
return success(workTeamService.createWorkTeamDetail(workTeamDetail));
}
@PutMapping("/work-team-detail/update")
@Operation(summary = "更新班组成员")
@PreAuthorize("@ss.hasPermission('mes:work-team:update')")
public CommonResult<Boolean> updateWorkTeamDetail(@Valid @RequestBody WorkTeamDetailDO workTeamDetail) {
workTeamService.updateWorkTeamDetail(workTeamDetail);
return success(true);
}
@DeleteMapping("/work-team-detail/delete")
@Parameter(name = "id", description = "编号", required = true)
@Operation(summary = "删除班组成员")
@PreAuthorize("@ss.hasPermission('mes:work-team:delete')")
public CommonResult<Boolean> deleteWorkTeamDetail(@RequestParam("id") Long id) {
workTeamService.deleteWorkTeamDetail(id);
return success(true);
}
@GetMapping("/work-team-detail/get")
@Operation(summary = "获得班组成员")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:work-team:query')")
public CommonResult<WorkTeamDetailDO> getWorkTeamDetail(@RequestParam("id") Long id) {
return success(workTeamService.getWorkTeamDetail(id));
}
}

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.mes.controller.admin.workteam.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 WorkTeamPageReqVO extends PageParam {
@Schema(description = "班组名称", example = "赵六")
private String teamName;
@Schema(description = "组长ID", example = "17857")
private Long teamLeaderId;
@Schema(description = "工序类型", example = "2")
private String teamType;
@Schema(description = "备注", example = "随便")
private String remark;
@Schema(description = "是否启用")
private Boolean isEnable;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,47 @@
package cn.iocoder.yudao.module.mes.controller.admin.workteam.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 WorkTeamRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19207")
@ExcelProperty("ID")
private Long id;
@Schema(description = "班组名称", example = "赵六")
@ExcelProperty("班组名称")
private String teamName;
@Schema(description = "组长ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17857")
@ExcelProperty("组长ID")
private Long teamLeaderId;
@Schema(description = "工序类型", example = "2")
@ExcelProperty(value = "工序类型", converter = DictConvert.class)
@DictFormat("mes_org_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private String teamType;
@Schema(description = "备注", example = "随便")
@ExcelProperty("备注")
private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否启用")
private Boolean isEnable;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,32 @@
package cn.iocoder.yudao.module.mes.controller.admin.workteam.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 生产班组新增/修改 Request VO")
@Data
public class WorkTeamSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19207")
private Long id;
@Schema(description = "班组名称", example = "赵六")
private String teamName;
@Schema(description = "组长ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17857")
@NotNull(message = "组长ID不能为空")
private Long teamLeaderId;
@Schema(description = "工序类型", example = "2")
private String teamType;
@Schema(description = "备注", example = "随便")
private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否启用不能为空")
private Boolean isEnable;
}

@ -0,0 +1,68 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.producereport;
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_produce_report")
@KeySequence("mes_produce_report_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProduceReportDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
*
*/
private String processInstanceId;
/**
* ID
*/
private Long workTeamId;
/**
* ID
*/
private Long groupId;
/**
*
*/
private LocalDateTime reportDate;
/**
*
*
* {@link TODO mes_record_status }
*/
private Integer status;
/**
* /
*
* {@link TODO mes_group_type }
*/
private Integer groupType;
/**
*
*/
private String remark;
/**
*
*/
private Boolean isEnable;
}

@ -0,0 +1,108 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.producereport;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("mes_produce_report_detail")
@KeySequence("mes_produce_report_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProduceReportDetailDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
* id
*/
private Long reportId;
/**
* ID
*/
private Long planId;
/**
* ID
*/
private Long productId;
/**
* ID
*/
private Long userId;
/**
* ID
*/
private Long orgId;
/**
*
*/
private BigDecimal qualityRate;
/**
*
*/
private String wasteReason;
/**
*
*/
private BigDecimal totalTime;
/**
*
*/
private BigDecimal packageNumber;
/**
*
*/
private String remark;
/**
*
*/
private Boolean isEnable;
/**
*
*/
private BigDecimal qualityNumber;
/**
*
*/
private BigDecimal wasteNumber;
/**
*
*/
private BigDecimal totalNumber;
/**
*
*/
private LocalDateTime reportDate;
/**
*
*/
private String reportTime;
/**
*
*
* {@link TODO mes_record_status }
*/
private Integer reportStatus;
}

@ -0,0 +1,53 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.workteam;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("mes_work_team")
@KeySequence("mes_work_team_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WorkTeamDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
*
*/
private String teamName;
/**
* ID
*/
private Long teamLeaderId;
/**
*
*
* {@link TODO mes_org_type }
*/
private String teamType;
/**
*
*/
private String remark;
/**
*
*/
private Boolean isEnable;
}

@ -0,0 +1,49 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.workteam;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("mes_work_team_detail")
@KeySequence("mes_work_team_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WorkTeamDetailDO extends BaseDO {
/**
* ID
*/
@TableId
private Long id;
/**
* id
*/
private Long workTeamId;
/**
* ID
*/
private Long userId;
/**
*
*
* {@link TODO mes_work_team_user_role }
*/
private Integer userRole;
/**
*
*/
private String remark;
}

@ -0,0 +1,51 @@
package cn.iocoder.yudao.module.mes.dal.mysql.producereport;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
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.producereport.ProduceReportDetailDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface ProduceReportDetailMapper extends BaseMapperX<ProduceReportDetailDO> {
default PageResult<ProduceReportDetailDO> selectPage(ProduceReportDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProduceReportDetailDO>()
.eqIfPresent(ProduceReportDetailDO::getReportId, reqVO.getReportId())
.eqIfPresent(ProduceReportDetailDO::getPlanId, reqVO.getPlanId())
.eqIfPresent(ProduceReportDetailDO::getProductId, reqVO.getProductId())
.eqIfPresent(ProduceReportDetailDO::getUserId, reqVO.getUserId())
.eqIfPresent(ProduceReportDetailDO::getOrgId, reqVO.getOrgId())
.eqIfPresent(ProduceReportDetailDO::getQualityRate, reqVO.getQualityRate())
.eqIfPresent(ProduceReportDetailDO::getWasteReason, reqVO.getWasteReason())
.eqIfPresent(ProduceReportDetailDO::getTotalTime, reqVO.getTotalTime())
.eqIfPresent(ProduceReportDetailDO::getPackageNumber, reqVO.getPackageNumber())
.eqIfPresent(ProduceReportDetailDO::getRemark, reqVO.getRemark())
.eqIfPresent(ProduceReportDetailDO::getIsEnable, reqVO.getIsEnable())
.betweenIfPresent(ProduceReportDetailDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(ProduceReportDetailDO::getQualityNumber, reqVO.getQualityNumber())
.eqIfPresent(ProduceReportDetailDO::getWasteNumber, reqVO.getWasteNumber())
.eqIfPresent(ProduceReportDetailDO::getTotalNumber, reqVO.getTotalNumber())
.betweenIfPresent(ProduceReportDetailDO::getReportDate, reqVO.getReportDate())
.eqIfPresent(ProduceReportDetailDO::getReportStatus, reqVO.getReportStatus())
.orderByDesc(ProduceReportDetailDO::getId));
}
default PageResult<ProduceReportDetailDO> selectPage(PageParam reqVO, Long reportId) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProduceReportDetailDO>()
.eq(ProduceReportDetailDO::getReportId, reportId)
.orderByDesc(ProduceReportDetailDO::getId));
}
default int deleteByReportId(Long reportId) {
return delete(ProduceReportDetailDO::getReportId, reportId);
}
}

@ -0,0 +1,34 @@
package cn.iocoder.yudao.module.mes.dal.mysql.producereport;
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.producereport.ProduceReportDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface ProduceReportMapper extends BaseMapperX<ProduceReportDO> {
default PageResult<ProduceReportDO> selectPage(ProduceReportPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProduceReportDO>()
.eqIfPresent(ProduceReportDO::getProcessInstanceId, reqVO.getProcessInstanceId())
.eqIfPresent(ProduceReportDO::getWorkTeamId, reqVO.getWorkTeamId())
.eqIfPresent(ProduceReportDO::getGroupId, reqVO.getGroupId())
.betweenIfPresent(ProduceReportDO::getReportDate, reqVO.getReportDate())
.eqIfPresent(ProduceReportDO::getStatus, reqVO.getStatus())
.eqIfPresent(ProduceReportDO::getGroupType, reqVO.getGroupType())
.eqIfPresent(ProduceReportDO::getRemark, reqVO.getRemark())
.eqIfPresent(ProduceReportDO::getIsEnable, reqVO.getIsEnable())
.betweenIfPresent(ProduceReportDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ProduceReportDO::getId));
}
}

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.mes.dal.mysql.workteam;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
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.workteam.WorkTeamDetailDO;
import org.apache.ibatis.annotations.Mapper;
/**
* Mapper
*
* @author
*/
@Mapper
public interface WorkTeamDetailMapper extends BaseMapperX<WorkTeamDetailDO> {
default PageResult<WorkTeamDetailDO> selectPage(PageParam reqVO, Long workTeamId) {
return selectPage(reqVO, new LambdaQueryWrapperX<WorkTeamDetailDO>()
.eq(WorkTeamDetailDO::getWorkTeamId, workTeamId)
.orderByDesc(WorkTeamDetailDO::getId));
}
default int deleteByWorkTeamId(Long workTeamId) {
return delete(WorkTeamDetailDO::getWorkTeamId, workTeamId);
}
}

@ -0,0 +1,31 @@
package cn.iocoder.yudao.module.mes.dal.mysql.workteam;
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.workteam.WorkTeamDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface WorkTeamMapper extends BaseMapperX<WorkTeamDO> {
default PageResult<WorkTeamDO> selectPage(WorkTeamPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<WorkTeamDO>()
.likeIfPresent(WorkTeamDO::getTeamName, reqVO.getTeamName())
.eqIfPresent(WorkTeamDO::getTeamLeaderId, reqVO.getTeamLeaderId())
.eqIfPresent(WorkTeamDO::getTeamType, reqVO.getTeamType())
.eqIfPresent(WorkTeamDO::getRemark, reqVO.getRemark())
.eqIfPresent(WorkTeamDO::getIsEnable, reqVO.getIsEnable())
.betweenIfPresent(WorkTeamDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(WorkTeamDO::getId));
}
}

@ -0,0 +1,55 @@
package cn.iocoder.yudao.module.mes.service.producereport;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDetailDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import javax.validation.Valid;
/**
* Service
*
* @author
*/
public interface ProduceReportDetailService {
/**
*
*
* @param createReqVO
* @return
*/
Long createProduceReportDetail(@Valid ProduceReportDetailSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateProduceReportDetail(@Valid ProduceReportDetailSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteProduceReportDetail(Long id);
/**
*
*
* @param id
* @return
*/
ProduceReportDetailDO getProduceReportDetail(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<ProduceReportDetailDO> getProduceReportDetailPage(ProduceReportDetailPageReqVO pageReqVO);
}

@ -0,0 +1,75 @@
package cn.iocoder.yudao.module.mes.service.producereport;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDetailDO;
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.producereport.ProduceReportDetailMapper;
import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class ProduceReportDetailServiceImpl implements ProduceReportDetailService {
@Resource
private ProduceReportDetailMapper produceReportDetailMapper;
@Override
public Long createProduceReportDetail(ProduceReportDetailSaveReqVO createReqVO) {
// 插入
ProduceReportDetailDO produceReportDetail = BeanUtils.toBean(createReqVO, ProduceReportDetailDO.class);
produceReportDetailMapper.insert(produceReportDetail);
// 返回
return produceReportDetail.getId();
}
@Override
public void updateProduceReportDetail(ProduceReportDetailSaveReqVO updateReqVO) {
// 校验存在
validateProduceReportDetailExists(updateReqVO.getId());
// 更新
ProduceReportDetailDO updateObj = BeanUtils.toBean(updateReqVO, ProduceReportDetailDO.class);
produceReportDetailMapper.updateById(updateObj);
}
@Override
public void deleteProduceReportDetail(Long id) {
// 校验存在
validateProduceReportDetailExists(id);
// 删除
produceReportDetailMapper.deleteById(id);
}
private void validateProduceReportDetailExists(Long id) {
if (produceReportDetailMapper.selectById(id) == null) {
throw exception(PRODUCE_REPORT_DETAIL_NOT_EXISTS);
}
}
@Override
public ProduceReportDetailDO getProduceReportDetail(Long id) {
return produceReportDetailMapper.selectById(id);
}
@Override
public PageResult<ProduceReportDetailDO> getProduceReportDetailPage(ProduceReportDetailPageReqVO pageReqVO) {
return produceReportDetailMapper.selectPage(pageReqVO);
}
}

@ -0,0 +1,98 @@
package cn.iocoder.yudao.module.mes.service.producereport;
import java.util.*;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDetailDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import javax.validation.Valid;
/**
* Service
*
* @author
*/
public interface ProduceReportService {
/**
*
*
* @param createReqVO
* @return
*/
Long createProduceReport(@Valid ProduceReportSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateProduceReport(@Valid ProduceReportSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteProduceReport(Long id);
/**
*
*
* @param id
* @return
*/
ProduceReportDO getProduceReport(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<ProduceReportDO> getProduceReportPage(ProduceReportPageReqVO pageReqVO);
// ==================== 子表(生产报工明细) ====================
/**
*
*
* @param pageReqVO
* @param reportId id
* @return
*/
PageResult<ProduceReportDetailDO> getProduceReportDetailPage(PageParam pageReqVO, Long reportId);
/**
*
*
* @param produceReportDetail
* @return
*/
Long createProduceReportDetail(@Valid ProduceReportDetailDO produceReportDetail);
/**
*
*
* @param produceReportDetail
*/
void updateProduceReportDetail(@Valid ProduceReportDetailDO produceReportDetail);
/**
*
*
* @param id
*/
void deleteProduceReportDetail(Long id);
/**
*
*
* @param id
* @return
*/
ProduceReportDetailDO getProduceReportDetail(Long id);
}

@ -0,0 +1,127 @@
package cn.iocoder.yudao.module.mes.service.producereport;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDetailDO;
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.producereport.ProduceReportMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.producereport.ProduceReportDetailMapper;
import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class ProduceReportServiceImpl implements ProduceReportService {
@Resource
private ProduceReportMapper produceReportMapper;
@Resource
private ProduceReportDetailMapper produceReportDetailMapper;
@Override
public Long createProduceReport(ProduceReportSaveReqVO createReqVO) {
// 插入
ProduceReportDO produceReport = BeanUtils.toBean(createReqVO, ProduceReportDO.class);
produceReportMapper.insert(produceReport);
// 返回
return produceReport.getId();
}
@Override
public void updateProduceReport(ProduceReportSaveReqVO updateReqVO) {
// 校验存在
validateProduceReportExists(updateReqVO.getId());
// 更新
ProduceReportDO updateObj = BeanUtils.toBean(updateReqVO, ProduceReportDO.class);
produceReportMapper.updateById(updateObj);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteProduceReport(Long id) {
// 校验存在
validateProduceReportExists(id);
// 删除
produceReportMapper.deleteById(id);
// 删除子表
deleteProduceReportDetailByReportId(id);
}
private void validateProduceReportExists(Long id) {
if (produceReportMapper.selectById(id) == null) {
throw exception(PRODUCE_REPORT_NOT_EXISTS);
}
}
@Override
public ProduceReportDO getProduceReport(Long id) {
return produceReportMapper.selectById(id);
}
@Override
public PageResult<ProduceReportDO> getProduceReportPage(ProduceReportPageReqVO pageReqVO) {
return produceReportMapper.selectPage(pageReqVO);
}
// ==================== 子表(生产报工明细) ====================
@Override
public PageResult<ProduceReportDetailDO> getProduceReportDetailPage(PageParam pageReqVO, Long reportId) {
return produceReportDetailMapper.selectPage(pageReqVO, reportId);
}
@Override
public Long createProduceReportDetail(ProduceReportDetailDO produceReportDetail) {
produceReportDetailMapper.insert(produceReportDetail);
return produceReportDetail.getId();
}
@Override
public void updateProduceReportDetail(ProduceReportDetailDO produceReportDetail) {
// 校验存在
validateProduceReportDetailExists(produceReportDetail.getId());
// 更新
produceReportDetailMapper.updateById(produceReportDetail);
}
@Override
public void deleteProduceReportDetail(Long id) {
// 校验存在
validateProduceReportDetailExists(id);
// 删除
produceReportDetailMapper.deleteById(id);
}
@Override
public ProduceReportDetailDO getProduceReportDetail(Long id) {
return produceReportDetailMapper.selectById(id);
}
private void validateProduceReportDetailExists(Long id) {
if (produceReportDetailMapper.selectById(id) == null) {
throw exception(PRODUCE_REPORT_DETAIL_NOT_EXISTS);
}
}
private void deleteProduceReportDetailByReportId(Long reportId) {
produceReportDetailMapper.deleteByReportId(reportId);
}
}

@ -0,0 +1,99 @@
package cn.iocoder.yudao.module.mes.service.workteam;
import java.util.*;
import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDetailDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import javax.validation.Valid;
/**
* Service
*
* @author
*/
public interface WorkTeamService {
/**
*
*
* @param createReqVO
* @return
*/
Long createWorkTeam(@Valid WorkTeamSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateWorkTeam(@Valid WorkTeamSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteWorkTeam(Long id);
/**
*
*
* @param id
* @return
*/
WorkTeamDO getWorkTeam(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<WorkTeamDO> getWorkTeamPage(WorkTeamPageReqVO pageReqVO);
// ==================== 子表(班组成员) ====================
/**
*
*
* @param pageReqVO
* @param workTeamId id
* @return
*/
PageResult<WorkTeamDetailDO> getWorkTeamDetailPage(PageParam pageReqVO, Long workTeamId);
/**
*
*
* @param workTeamDetail
* @return
*/
Long createWorkTeamDetail(@Valid WorkTeamDetailDO workTeamDetail);
/**
*
*
* @param workTeamDetail
*/
void updateWorkTeamDetail(@Valid WorkTeamDetailDO workTeamDetail);
/**
*
*
* @param id
*/
void deleteWorkTeamDetail(Long id);
/**
*
*
* @param id
* @return
*/
WorkTeamDetailDO getWorkTeamDetail(Long id);
}

@ -0,0 +1,127 @@
package cn.iocoder.yudao.module.mes.service.workteam;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDetailDO;
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.workteam.WorkTeamMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.workteam.WorkTeamDetailMapper;
import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class WorkTeamServiceImpl implements WorkTeamService {
@Resource
private WorkTeamMapper workTeamMapper;
@Resource
private WorkTeamDetailMapper workTeamDetailMapper;
@Override
public Long createWorkTeam(WorkTeamSaveReqVO createReqVO) {
// 插入
WorkTeamDO workTeam = BeanUtils.toBean(createReqVO, WorkTeamDO.class);
workTeamMapper.insert(workTeam);
// 返回
return workTeam.getId();
}
@Override
public void updateWorkTeam(WorkTeamSaveReqVO updateReqVO) {
// 校验存在
validateWorkTeamExists(updateReqVO.getId());
// 更新
WorkTeamDO updateObj = BeanUtils.toBean(updateReqVO, WorkTeamDO.class);
workTeamMapper.updateById(updateObj);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteWorkTeam(Long id) {
// 校验存在
validateWorkTeamExists(id);
// 删除
workTeamMapper.deleteById(id);
// 删除子表
deleteWorkTeamDetailByWorkTeamId(id);
}
private void validateWorkTeamExists(Long id) {
if (workTeamMapper.selectById(id) == null) {
throw exception(WORK_TEAM_NOT_EXISTS);
}
}
@Override
public WorkTeamDO getWorkTeam(Long id) {
return workTeamMapper.selectById(id);
}
@Override
public PageResult<WorkTeamDO> getWorkTeamPage(WorkTeamPageReqVO pageReqVO) {
return workTeamMapper.selectPage(pageReqVO);
}
// ==================== 子表(班组成员) ====================
@Override
public PageResult<WorkTeamDetailDO> getWorkTeamDetailPage(PageParam pageReqVO, Long workTeamId) {
return workTeamDetailMapper.selectPage(pageReqVO, workTeamId);
}
@Override
public Long createWorkTeamDetail(WorkTeamDetailDO workTeamDetail) {
workTeamDetailMapper.insert(workTeamDetail);
return workTeamDetail.getId();
}
@Override
public void updateWorkTeamDetail(WorkTeamDetailDO workTeamDetail) {
// 校验存在
validateWorkTeamDetailExists(workTeamDetail.getId());
// 更新
workTeamDetailMapper.updateById(workTeamDetail);
}
@Override
public void deleteWorkTeamDetail(Long id) {
// 校验存在
validateWorkTeamDetailExists(id);
// 删除
workTeamDetailMapper.deleteById(id);
}
@Override
public WorkTeamDetailDO getWorkTeamDetail(Long id) {
return workTeamDetailMapper.selectById(id);
}
private void validateWorkTeamDetailExists(Long id) {
if (workTeamDetailMapper.selectById(id) == null) {
throw exception(WORK_TEAM_DETAIL_NOT_EXISTS);
}
}
private void deleteWorkTeamDetailByWorkTeamId(Long workTeamId) {
workTeamDetailMapper.deleteByWorkTeamId(workTeamId);
}
}

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.mes.dal.mysql.producereport.ProduceReportDetailMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.mes.dal.mysql.producereport.ProduceReportMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.mes.dal.mysql.workteam.WorkTeamMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

@ -0,0 +1,190 @@
package cn.iocoder.yudao.module.mes.service.producereport;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDetailDO;
import cn.iocoder.yudao.module.mes.dal.mysql.producereport.ProduceReportDetailMapper;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
import javax.annotation.Resource;
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 ProduceReportDetailServiceImpl}
*
* @author
*/
@Import(ProduceReportDetailServiceImpl.class)
public class ProduceReportDetailServiceImplTest extends BaseDbUnitTest {
@Resource
private ProduceReportDetailServiceImpl produceReportDetailService;
@Resource
private ProduceReportDetailMapper produceReportDetailMapper;
@Test
public void testCreateProduceReportDetail_success() {
// 准备参数
ProduceReportDetailSaveReqVO createReqVO = randomPojo(ProduceReportDetailSaveReqVO.class).setId(null);
// 调用
Long produceReportDetailId = produceReportDetailService.createProduceReportDetail(createReqVO);
// 断言
assertNotNull(produceReportDetailId);
// 校验记录的属性是否正确
ProduceReportDetailDO produceReportDetail = produceReportDetailMapper.selectById(produceReportDetailId);
assertPojoEquals(createReqVO, produceReportDetail, "id");
}
@Test
public void testUpdateProduceReportDetail_success() {
// mock 数据
ProduceReportDetailDO dbProduceReportDetail = randomPojo(ProduceReportDetailDO.class);
produceReportDetailMapper.insert(dbProduceReportDetail);// @Sql: 先插入出一条存在的数据
// 准备参数
ProduceReportDetailSaveReqVO updateReqVO = randomPojo(ProduceReportDetailSaveReqVO.class, o -> {
o.setId(dbProduceReportDetail.getId()); // 设置更新的 ID
});
// 调用
produceReportDetailService.updateProduceReportDetail(updateReqVO);
// 校验是否更新正确
ProduceReportDetailDO produceReportDetail = produceReportDetailMapper.selectById(updateReqVO.getId()); // 获取最新的
assertPojoEquals(updateReqVO, produceReportDetail);
}
@Test
public void testUpdateProduceReportDetail_notExists() {
// 准备参数
ProduceReportDetailSaveReqVO updateReqVO = randomPojo(ProduceReportDetailSaveReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> produceReportDetailService.updateProduceReportDetail(updateReqVO), PRODUCE_REPORT_DETAIL_NOT_EXISTS);
}
@Test
public void testDeleteProduceReportDetail_success() {
// mock 数据
ProduceReportDetailDO dbProduceReportDetail = randomPojo(ProduceReportDetailDO.class);
produceReportDetailMapper.insert(dbProduceReportDetail);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbProduceReportDetail.getId();
// 调用
produceReportDetailService.deleteProduceReportDetail(id);
// 校验数据不存在了
assertNull(produceReportDetailMapper.selectById(id));
}
@Test
public void testDeleteProduceReportDetail_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> produceReportDetailService.deleteProduceReportDetail(id), PRODUCE_REPORT_DETAIL_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetProduceReportDetailPage() {
// mock 数据
ProduceReportDetailDO dbProduceReportDetail = randomPojo(ProduceReportDetailDO.class, o -> { // 等会查询到
o.setReportId(null);
o.setPlanId(null);
o.setProductId(null);
o.setUserId(null);
o.setOrgId(null);
o.setQualityNumber(null);
o.setWasteNumber(null);
o.setTotalNumber(null);
o.setQualityRate(null);
o.setWasteReason(null);
o.setReportTime(null);
o.setTotalTime(null);
o.setPackageNumber(null);
o.setRemark(null);
o.setIsEnable(null);
o.setCreateTime(null);
});
produceReportDetailMapper.insert(dbProduceReportDetail);
// 测试 reportId 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setReportId(null)));
// 测试 planId 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setPlanId(null)));
// 测试 productId 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setProductId(null)));
// 测试 userId 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setUserId(null)));
// 测试 orgId 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setOrgId(null)));
// 测试 qualityNumber 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setQualityNumber(null)));
// 测试 wasteNumber 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setWasteNumber(null)));
// 测试 totalNumber 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setTotalNumber(null)));
// 测试 qualityRate 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setQualityRate(null)));
// 测试 wasteReason 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setWasteReason(null)));
// 测试 reportTime 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setReportTime(null)));
// 测试 totalTime 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setTotalTime(null)));
// 测试 packageNumber 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setPackageNumber(null)));
// 测试 remark 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setRemark(null)));
// 测试 isEnable 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setIsEnable(null)));
// 测试 createTime 不匹配
produceReportDetailMapper.insert(cloneIgnoreId(dbProduceReportDetail, o -> o.setCreateTime(null)));
// 准备参数
ProduceReportDetailPageReqVO reqVO = new ProduceReportDetailPageReqVO();
reqVO.setReportId(null);
reqVO.setPlanId(null);
reqVO.setProductId(null);
reqVO.setUserId(null);
reqVO.setOrgId(null);
reqVO.setQualityNumber(null);
reqVO.setWasteNumber(null);
reqVO.setTotalNumber(null);
reqVO.setQualityRate(null);
reqVO.setWasteReason(null);
reqVO.setReportTime(null);
reqVO.setTotalTime(null);
reqVO.setPackageNumber(null);
reqVO.setRemark(null);
reqVO.setIsEnable(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
PageResult<ProduceReportDetailDO> pageResult = produceReportDetailService.getProduceReportDetailPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbProduceReportDetail, pageResult.getList().get(0));
}
}

@ -0,0 +1,162 @@
package cn.iocoder.yudao.module.mes.service.producereport;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDO;
import cn.iocoder.yudao.module.mes.dal.mysql.producereport.ProduceReportMapper;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
import javax.annotation.Resource;
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 ProduceReportServiceImpl}
*
* @author
*/
@Import(ProduceReportServiceImpl.class)
public class ProduceReportServiceImplTest extends BaseDbUnitTest {
@Resource
private ProduceReportServiceImpl produceReportService;
@Resource
private ProduceReportMapper produceReportMapper;
@Test
public void testCreateProduceReport_success() {
// 准备参数
ProduceReportSaveReqVO createReqVO = randomPojo(ProduceReportSaveReqVO.class).setId(null);
// 调用
Long produceReportId = produceReportService.createProduceReport(createReqVO);
// 断言
assertNotNull(produceReportId);
// 校验记录的属性是否正确
ProduceReportDO produceReport = produceReportMapper.selectById(produceReportId);
assertPojoEquals(createReqVO, produceReport, "id");
}
@Test
public void testUpdateProduceReport_success() {
// mock 数据
ProduceReportDO dbProduceReport = randomPojo(ProduceReportDO.class);
produceReportMapper.insert(dbProduceReport);// @Sql: 先插入出一条存在的数据
// 准备参数
ProduceReportSaveReqVO updateReqVO = randomPojo(ProduceReportSaveReqVO.class, o -> {
o.setId(dbProduceReport.getId()); // 设置更新的 ID
});
// 调用
produceReportService.updateProduceReport(updateReqVO);
// 校验是否更新正确
ProduceReportDO produceReport = produceReportMapper.selectById(updateReqVO.getId()); // 获取最新的
assertPojoEquals(updateReqVO, produceReport);
}
@Test
public void testUpdateProduceReport_notExists() {
// 准备参数
ProduceReportSaveReqVO updateReqVO = randomPojo(ProduceReportSaveReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> produceReportService.updateProduceReport(updateReqVO), PRODUCE_REPORT_NOT_EXISTS);
}
@Test
public void testDeleteProduceReport_success() {
// mock 数据
ProduceReportDO dbProduceReport = randomPojo(ProduceReportDO.class);
produceReportMapper.insert(dbProduceReport);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbProduceReport.getId();
// 调用
produceReportService.deleteProduceReport(id);
// 校验数据不存在了
assertNull(produceReportMapper.selectById(id));
}
@Test
public void testDeleteProduceReport_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> produceReportService.deleteProduceReport(id), PRODUCE_REPORT_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetProduceReportPage() {
// mock 数据
ProduceReportDO dbProduceReport = randomPojo(ProduceReportDO.class, o -> { // 等会查询到
o.setProcessInstanceId(null);
o.setWorkTeamId(null);
o.setGroupId(null);
o.setReportDate(null);
o.setStatus(null);
o.setGroupType(null);
o.setRemark(null);
o.setIsEnable(null);
o.setCreateTime(null);
});
produceReportMapper.insert(dbProduceReport);
// 测试 processInstanceId 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setProcessInstanceId(null)));
// 测试 workTeamId 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setWorkTeamId(null)));
// 测试 groupId 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setGroupId(null)));
// 测试 reportDate 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setReportDate(null)));
// 测试 status 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setStatus(null)));
// 测试 groupType 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setGroupType(null)));
// 测试 remark 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setRemark(null)));
// 测试 isEnable 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setIsEnable(null)));
// 测试 createTime 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setCreateTime(null)));
// 准备参数
ProduceReportPageReqVO reqVO = new ProduceReportPageReqVO();
reqVO.setProcessInstanceId(null);
reqVO.setWorkTeamId(null);
reqVO.setGroupId(null);
reqVO.setReportDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setStatus(null);
reqVO.setGroupType(null);
reqVO.setRemark(null);
reqVO.setIsEnable(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
PageResult<ProduceReportDO> pageResult = produceReportService.getProduceReportPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbProduceReport, pageResult.getList().get(0));
}
}

@ -0,0 +1,150 @@
package cn.iocoder.yudao.module.mes.service.workteam;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
import cn.iocoder.yudao.module.mes.controller.admin.workteam.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.workteam.WorkTeamDO;
import cn.iocoder.yudao.module.mes.dal.mysql.workteam.WorkTeamMapper;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
import javax.annotation.Resource;
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 WorkTeamServiceImpl}
*
* @author
*/
@Import(WorkTeamServiceImpl.class)
public class WorkTeamServiceImplTest extends BaseDbUnitTest {
@Resource
private WorkTeamServiceImpl workTeamService;
@Resource
private WorkTeamMapper workTeamMapper;
@Test
public void testCreateWorkTeam_success() {
// 准备参数
WorkTeamSaveReqVO createReqVO = randomPojo(WorkTeamSaveReqVO.class).setId(null);
// 调用
Long workTeamId = workTeamService.createWorkTeam(createReqVO);
// 断言
assertNotNull(workTeamId);
// 校验记录的属性是否正确
WorkTeamDO workTeam = workTeamMapper.selectById(workTeamId);
assertPojoEquals(createReqVO, workTeam, "id");
}
@Test
public void testUpdateWorkTeam_success() {
// mock 数据
WorkTeamDO dbWorkTeam = randomPojo(WorkTeamDO.class);
workTeamMapper.insert(dbWorkTeam);// @Sql: 先插入出一条存在的数据
// 准备参数
WorkTeamSaveReqVO updateReqVO = randomPojo(WorkTeamSaveReqVO.class, o -> {
o.setId(dbWorkTeam.getId()); // 设置更新的 ID
});
// 调用
workTeamService.updateWorkTeam(updateReqVO);
// 校验是否更新正确
WorkTeamDO workTeam = workTeamMapper.selectById(updateReqVO.getId()); // 获取最新的
assertPojoEquals(updateReqVO, workTeam);
}
@Test
public void testUpdateWorkTeam_notExists() {
// 准备参数
WorkTeamSaveReqVO updateReqVO = randomPojo(WorkTeamSaveReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> workTeamService.updateWorkTeam(updateReqVO), WORK_TEAM_NOT_EXISTS);
}
@Test
public void testDeleteWorkTeam_success() {
// mock 数据
WorkTeamDO dbWorkTeam = randomPojo(WorkTeamDO.class);
workTeamMapper.insert(dbWorkTeam);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbWorkTeam.getId();
// 调用
workTeamService.deleteWorkTeam(id);
// 校验数据不存在了
assertNull(workTeamMapper.selectById(id));
}
@Test
public void testDeleteWorkTeam_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> workTeamService.deleteWorkTeam(id), WORK_TEAM_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetWorkTeamPage() {
// mock 数据
WorkTeamDO dbWorkTeam = randomPojo(WorkTeamDO.class, o -> { // 等会查询到
o.setTeamName(null);
o.setTeamLeaderId(null);
o.setTeamType(null);
o.setRemark(null);
o.setIsEnable(null);
o.setCreateTime(null);
});
workTeamMapper.insert(dbWorkTeam);
// 测试 teamName 不匹配
workTeamMapper.insert(cloneIgnoreId(dbWorkTeam, o -> o.setTeamName(null)));
// 测试 teamLeaderId 不匹配
workTeamMapper.insert(cloneIgnoreId(dbWorkTeam, o -> o.setTeamLeaderId(null)));
// 测试 teamType 不匹配
workTeamMapper.insert(cloneIgnoreId(dbWorkTeam, o -> o.setTeamType(null)));
// 测试 remark 不匹配
workTeamMapper.insert(cloneIgnoreId(dbWorkTeam, o -> o.setRemark(null)));
// 测试 isEnable 不匹配
workTeamMapper.insert(cloneIgnoreId(dbWorkTeam, o -> o.setIsEnable(null)));
// 测试 createTime 不匹配
workTeamMapper.insert(cloneIgnoreId(dbWorkTeam, o -> o.setCreateTime(null)));
// 准备参数
WorkTeamPageReqVO reqVO = new WorkTeamPageReqVO();
reqVO.setTeamName(null);
reqVO.setTeamLeaderId(null);
reqVO.setTeamType(null);
reqVO.setRemark(null);
reqVO.setIsEnable(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
PageResult<WorkTeamDO> pageResult = workTeamService.getWorkTeamPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbWorkTeam, pageResult.getList().get(0));
}
}

@ -16,17 +16,20 @@ DELETE FROM "mes_item_requisition_detail";
DELETE FROM "mes_item_requisition";
-- 将该删表 SQL 语句,添加到 yudao-module-mes-biz 模块的 test/resources/sql/clean.sql 文件里
DELETE FROM "mes_record_template";
-- 将该删表 SQL 语句,添加到 yudao-module-mes-biz 模块的 test/resources/sql/clean.sql 文件里
DELETE FROM "mes_record_chengxing";
-- 将该删表 SQL 语句,添加到 yudao-module-mes-biz 模块的 test/resources/sql/clean.sql 文件里
DELETE FROM "mes_record_suijiang";
DELETE FROM "mes_work_team";
-- 将该删表 SQL 语句,添加到 yudao-module-mes-biz 模块的 test/resources/sql/clean.sql 文件里
DELETE FROM "mes_work_team_detail";
-- 将该删表 SQL 语句,添加到 yudao-module-mes-biz 模块的 test/resources/sql/clean.sql 文件里
DELETE FROM "mes_produce_report";
-- 将该删表 SQL 语句,添加到 yudao-module-mes-biz 模块的 test/resources/sql/clean.sql 文件里
DELETE FROM "mes_produce_report_detail";

@ -181,7 +181,7 @@ CREATE TABLE IF NOT EXISTS "mes_record_template"
"updater" varchar DEFAULT '',
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
"deleted" bit NOT NULL DEFAULT FALSE,
"tenant_id" bigint ,
"tenant_id" bigint,
PRIMARY KEY ("id")
) COMMENT '记录表模板';
CREATE TABLE IF NOT EXISTS "mes_record_chengxing"
@ -203,31 +203,112 @@ CREATE TABLE IF NOT EXISTS "mes_record_chengxing"
"updater" varchar DEFAULT '',
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
"deleted" bit NOT NULL DEFAULT FALSE,
"tenant_id" bigint ,
"tenant_id" bigint,
PRIMARY KEY ("id")
) COMMENT '成型记录表';
CREATE TABLE IF NOT EXISTS "mes_record_suijiang" (
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
"record_id" bigint NOT NULL,
"start_time" varchar NOT NULL,
"end_time" varchar NOT NULL,
"suijiang_time" varchar NOT NULL,
"suijiang_cost_time" varchar,
"ratio_id" bigint,
"ratio" varchar,
"water_usage" varchar,
"density_out" varchar,
"add_item_usage" varchar,
"slag_yield" varchar,
"density" varchar,
"remark" varchar,
"is_enable" bit NOT NULL,
"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 NOT NULL,
PRIMARY KEY ("id")
CREATE TABLE IF NOT EXISTS "mes_record_suijiang"
(
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
"record_id" bigint NOT NULL,
"start_time" varchar NOT NULL,
"end_time" varchar NOT NULL,
"suijiang_time" varchar NOT NULL,
"suijiang_cost_time" varchar,
"ratio_id" bigint,
"ratio" varchar,
"water_usage" varchar,
"density_out" varchar,
"add_item_usage" varchar,
"slag_yield" varchar,
"density" varchar,
"remark" varchar,
"is_enable" bit NOT NULL,
"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 NOT NULL,
PRIMARY KEY ("id")
) COMMENT '碎浆记录表';
CREATE TABLE IF NOT EXISTS "mes_work_team"
(
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
"team_name" varchar,
"team_leader_id" bigint NOT NULL,
"team_type" varchar,
"remark" varchar,
"is_enable" bit NOT NULL,
"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,
PRIMARY KEY ("id")
) COMMENT '生产班组';
CREATE TABLE IF NOT EXISTS "mes_work_team_detail"
(
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
"work_team_id" bigint,
"user_id" bigint NOT NULL,
"user_role" int NOT NULL,
"remark" varchar,
"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,
PRIMARY KEY ("id")
) COMMENT '班组成员';
CREATE TABLE IF NOT EXISTS "mes_produce_report"
(
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
"process_instance_id" varchar,
"work_team_id" bigint NOT NULL,
"group_id" bigint NOT NULL,
"report_date" varchar NOT NULL,
"status" int NOT NULL,
"group_type" int NOT NULL,
"remark" varchar,
"is_enable" bit NOT NULL,
"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,
PRIMARY KEY ("id")
) COMMENT '生产报工单';
CREATE TABLE IF NOT EXISTS "mes_produce_report_detail"
(
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
"report_id" bigint,
"plan_id" bigint NOT NULL,
"product_id" bigint NOT NULL,
"user_id" bigint NOT NULL,
"org_id" bigint NOT NULL,
"quality_rate" varchar,
"waste_reason" varchar,
"total_time" varchar,
"package_number" varchar,
"remark" varchar,
"is_enable" bit NOT NULL,
"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,
"quality_number" varchar,
"waste_number" varchar,
"total_number" varchar,
"report_date" varchar,
"report_time" varchar,
"report_status" int,
PRIMARY KEY ("id")
) COMMENT '生产报工明细';

Loading…
Cancel
Save