add produce report

plp
chenshuichuan 2 years ago
parent e6692e2fde
commit dd86c35c44

@ -46,15 +46,19 @@ CREATE TABLE `mes_work_team_detail`
CREATE TABLE `mes_produce_report` CREATE TABLE `mes_produce_report`
( (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID', `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
`process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '流程实例的编号', `process_instance_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '流程实例编号',
`work_team_id` bigint NOT NULL COMMENT '组别ID', `report_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '编号',
`group_id` bigint NOT NULL COMMENT '班组ID', `user_id` bigint NOT NULL COMMENT '用户ID',
`report_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '报工日期', `org_id` bigint NOT NULL COMMENT '工序ID',
`status` tinyint NOT NULL COMMENT '状态', `report_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '代报/自报',
`group_type` tinyint NOT NULL COMMENT '白班/夜班', `group_type` int DEFAULT NULL COMMENT '白班夜班',
`org_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '工序',
`report_time` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '计件时段',
`total_time` decimal(24, 6) DEFAULT NULL COMMENT '总时长',
`report_date` datetime DEFAULT NULL COMMENT '报工日期',
`report_status` tinyint DEFAULT NULL COMMENT '报工状态',
`remark` 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 '创建者', `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者', `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者',
@ -72,29 +76,34 @@ 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', `report_id` bigint DEFAULT NULL COMMENT '报工单id',
`plan_id` bigint NOT NULL COMMENT '生产计划ID', `plan_id` bigint DEFAULT NULL COMMENT '生产计划ID',
`product_id` bigint NOT NULL COMMENT '产品ID', `product_id` bigint DEFAULT NULL COMMENT '产品ID',
`user_id` bigint NOT NULL COMMENT '用户ID', `user_id` bigint DEFAULT NULL COMMENT '用户ID',
`org_id` bigint NOT NULL COMMENT '组织ID', `report_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '代报/自报',
`group_type` int DEFAULT NULL COMMENT '白班夜班',
`org_type` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '工序类型',
`org_id` bigint DEFAULT NULL COMMENT '组织ID',
`quality_number` decimal(24, 6) DEFAULT NULL COMMENT '成品数量', `quality_number` decimal(24, 6) DEFAULT NULL COMMENT '成品数量',
`waste_number` decimal(24, 6) DEFAULT NULL COMMENT '废品数量', `waste_number` decimal(24, 6) DEFAULT NULL COMMENT '废品数量',
`total_number` decimal(24, 6) DEFAULT NULL COMMENT '废品数量', `total_number` decimal(24, 6) DEFAULT NULL COMMENT '数量',
`quality_rate` 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 '备注', `waste_reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '备注',
`report_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '计件时间', `report_time` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '计件时间',
`total_time` decimal(24, 6) DEFAULT NULL COMMENT '总时长', `total_time` decimal(24, 6) DEFAULT NULL COMMENT '总时长',
`package_number` 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 '备注', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '备注',
`is_enable` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否启用', `is_enable` bit(1) DEFAULT b'1' COMMENT '是否启用',
`creator` varchar(64) 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 '创建时间', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' 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 '更新时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint DEFAULT NULL COMMENT '租户id', `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
`report_date` datetime DEFAULT NULL COMMENT '报工日期',
`report_status` tinyint DEFAULT NULL COMMENT '报工状态',
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB ) ENGINE = InnoDB
AUTO_INCREMENT = 91 AUTO_INCREMENT = 108
DEFAULT CHARSET = utf8mb4 DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COLLATE = utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT ='生产报工明细'; ROW_FORMAT = DYNAMIC COMMENT ='生产报工明细';
@ -368,7 +377,16 @@ CREATE TABLE `mes_produce_report_change_record`
CREATE VIEW mes_view_report_plan_detail CREATE VIEW mes_view_report_plan_detail
AS AS
SELECT wp.*, pd.user_id ,pd.report_type ,pd.group_type ,pd.org_type ,pd.org_id ,pd.quality_number ,pd.waste_number , SELECT wp.*,
pd.report_date ,pd.report_status ,pd.creator as report_creator pd.user_id,
pd.report_type,
pd.group_type,
pd.org_type,
pd.org_id,
pd.quality_number,
pd.waste_number,
pd.report_date,
pd.report_status,
pd.creator as report_creator
FROM mes_work_report_plan wp FROM mes_work_report_plan wp
JOIN mes_produce_report_detail pd ON wp.report_id = pd.id; JOIN mes_produce_report_detail pd ON wp.report_id = pd.id;

@ -23,6 +23,8 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
@ -41,6 +43,9 @@ public class ProduceReportController {
@Operation(summary = "创建生产报工单") @Operation(summary = "创建生产报工单")
@PreAuthorize("@ss.hasPermission('mes:produce-report:create')") @PreAuthorize("@ss.hasPermission('mes:produce-report:create')")
public CommonResult<Long> createProduceReport(@Valid @RequestBody ProduceReportSaveReqVO createReqVO) { public CommonResult<Long> createProduceReport(@Valid @RequestBody ProduceReportSaveReqVO createReqVO) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(createReqVO.getReportDateString(), formatter);
createReqVO.setReportDate(localDateTime);
return success(produceReportService.createProduceReport(createReqVO)); return success(produceReportService.createProduceReport(createReqVO));
} }
@ -48,6 +53,9 @@ public class ProduceReportController {
@Operation(summary = "更新生产报工单") @Operation(summary = "更新生产报工单")
@PreAuthorize("@ss.hasPermission('mes:produce-report:update')") @PreAuthorize("@ss.hasPermission('mes:produce-report:update')")
public CommonResult<Boolean> updateProduceReport(@Valid @RequestBody ProduceReportSaveReqVO updateReqVO) { public CommonResult<Boolean> updateProduceReport(@Valid @RequestBody ProduceReportSaveReqVO updateReqVO) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(updateReqVO.getReportDateString(), formatter);
updateReqVO.setReportDate(localDateTime);
produceReportService.updateProduceReport(updateReqVO); produceReportService.updateProduceReport(updateReqVO);
return success(true); return success(true);
} }
@ -93,45 +101,18 @@ public class ProduceReportController {
// ==================== 子表(生产报工明细) ==================== // ==================== 子表(生产报工明细) ====================
@GetMapping("/produce-report-detail/page") @GetMapping("/produce-report-detail/list-by-report-id")
@Operation(summary = "获得生产报工明细分页") @Operation(summary = "获得生产报工明细列表")
@Parameter(name = "reportId", description = "报工单id") @Parameter(name = "reportId", description = "报工单id")
@PreAuthorize("@ss.hasPermission('mes:produce-report:query')") @PreAuthorize("@ss.hasPermission('mes:produce-report:query')")
public CommonResult<PageResult<ProduceReportDetailDO>> getProduceReportDetailPage(PageParam pageReqVO, public CommonResult<List<ProduceReportDetailDO>> getProduceReportDetailListByReportId(@RequestParam("reportId") Long reportId) {
@RequestParam("reportId") Long reportId) { return success(produceReportService.getProduceReportDetailListByReportId(reportId));
return success(produceReportService.getProduceReportDetailPage(pageReqVO, reportId));
} }
@GetMapping("/updateStatus")
@PostMapping("/produce-report-detail/create") @Operation(summary = "提交报工单")
@Operation(summary = "创建生产报工明细") public CommonResult<Boolean> updateStatus(@RequestParam("id") Long id,
@PreAuthorize("@ss.hasPermission('mes:produce-report:create')") @RequestParam("status") Integer status) {
public CommonResult<Long> createProduceReportDetail(@Valid @RequestBody ProduceReportDetailDO produceReportDetail) { produceReportService.updateStatus(id,status);
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); 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));
}
} }

@ -1,12 +1,11 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereport.vo; package cn.iocoder.yudao.module.mes.controller.admin.producereport.vo;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import cn.iocoder.yudao.framework.common.pojo.PageParam;
import lombok.EqualsAndHashCode; import java.math.BigDecimal;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -17,33 +16,47 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
@ToString(callSuper = true) @ToString(callSuper = true)
public class ProduceReportPageReqVO extends PageParam { public class ProduceReportPageReqVO extends PageParam {
@Schema(description = "流程实例编号", example = "2975") @Schema(description = "流程实例编号", example = "12049")
private String processInstanceId; private String processInstanceId;
@Schema(description = "组别ID", example = "32137") @Schema(description = "编号")
private Long workTeamId; private String reportCode;
@Schema(description = "班组ID", example = "10669") @Schema(description = "用户ID", example = "19983")
private Long groupId; private Long userId;
@Schema(description = "报工日期") @Schema(description = "工序ID", example = "28795")
private Long orgId;
@Schema(description = "工序", example = "2")
private String orgType;
@Schema(description = "计件时段")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] reportDate; private String[] reportTime;
@Schema(description = "状态", example = "1") @Schema(description = "总时长")
private Integer status; @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private BigDecimal[] totalTime;
@Schema(description = "白班/夜班", example = "1") @Schema(description = "报工状态", example = "2")
private Integer groupType; private Integer reportStatus;
@Schema(description = "备注", example = "随便") @Schema(description = "备注", example = "你猜")
private String remark; private String remark;
@Schema(description = "是否启用")
private Boolean isEnable;
@Schema(description = "创建时间") @Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
@Schema(description = "班别", example = "1")
private Integer groupType;
@Schema(description = "报工类型", example = "1")
private String reportType;
@Schema(description = "报工日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] reportDate;
} }

@ -1,59 +1,79 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereport.vo; package cn.iocoder.yudao.module.mes.controller.admin.producereport.vo;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; 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") @Schema(description = "管理后台 - 生产报工单 Response VO")
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
public class ProduceReportRespVO { public class ProduceReportRespVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6256") @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "29099")
@ExcelProperty("ID") @ExcelProperty("ID")
private Long id; private Long id;
@Schema(description = "流程实例编号", example = "2975") @Schema(description = "流程实例编号", example = "12049")
@ExcelProperty("流程实例编号") @ExcelProperty("流程实例编号")
private String processInstanceId; private String processInstanceId;
@Schema(description = "组别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32137") @Schema(description = "编号")
@ExcelProperty("组别ID") @ExcelProperty("编号")
private Long workTeamId; private String reportCode;
@Schema(description = "班组ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10669") @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19983")
@ExcelProperty("班组ID") @ExcelProperty("用户ID")
private Long groupId; private Long userId;
@Schema(description = "报工日期", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "工序ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28795")
@ExcelProperty("报工日期") @ExcelProperty("工序ID")
private LocalDateTime reportDate; private Long orgId;
@Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @Schema(description = "工序", example = "2")
@ExcelProperty(value = "状态", converter = DictConvert.class) @ExcelProperty(value = "工序", converter = DictConvert.class)
@DictFormat("mes_record_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 @DictFormat("mes_org_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer status; private String orgType;
@Schema(description = "白班/夜班", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @Schema(description = "计件时段")
@ExcelProperty(value = "白班/夜班", converter = DictConvert.class) @ExcelProperty("计件时段")
@DictFormat("mes_group_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 private String reportTime;
private Integer groupType;
@Schema(description = "总时长")
@ExcelProperty("总时长")
private BigDecimal totalTime;
@Schema(description = "备注", example = "随便") @Schema(description = "报工状态", example = "2")
@ExcelProperty(value = "报工状态", converter = DictConvert.class)
@DictFormat("mes_record_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer reportStatus;
@Schema(description = "备注", example = "你猜")
@ExcelProperty("备注") @ExcelProperty("备注")
private String remark; private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否启用")
private Boolean isEnable;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
@Schema(description = "班别", example = "1")
@ExcelProperty(value = "班别", converter = DictConvert.class)
@DictFormat("mes_group_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer groupType;
@Schema(description = "报工类型", example = "1")
@ExcelProperty(value = "报工类型", converter = DictConvert.class)
@DictFormat("mes_produce_report_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private String reportType;
@Schema(description = "报工日期")
@ExcelProperty("报工日期")
private LocalDateTime reportDate;
} }

@ -1,46 +1,61 @@
package cn.iocoder.yudao.module.mes.controller.admin.producereport.vo; package cn.iocoder.yudao.module.mes.controller.admin.producereport.vo;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDetailDO;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 生产报工单新增/修改 Request VO") @Schema(description = "管理后台 - 生产报工单新增/修改 Request VO")
@Data @Data
public class ProduceReportSaveReqVO { public class ProduceReportSaveReqVO {
@Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6256") @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "29099")
private Long id; private Long id;
@Schema(description = "流程实例编号", example = "2975") @Schema(description = "流程实例编号", example = "12049")
private String processInstanceId; private String processInstanceId;
@Schema(description = "组别ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32137") @Schema(description = "编号")
@NotNull(message = "组别ID不能为空") private String reportCode;
private Long workTeamId;
@Schema(description = "班组ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10669") @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19983")
@NotNull(message = "班组ID不能为空") @NotNull(message = "用户ID不能为空")
private Long groupId; private Long userId;
@Schema(description = "报工日期", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "工序ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28795")
@NotNull(message = "报工日期不能为空") @NotNull(message = "工序ID不能为空")
private LocalDateTime reportDate; private Long orgId;
@Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @Schema(description = "工序", example = "2")
@NotNull(message = "状态不能为空") private String orgType;
private Integer status;
@Schema(description = "白班/夜班", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @Schema(description = "计件时段")
@NotNull(message = "白班/夜班不能为空") private String reportTime;
private Integer groupType;
@Schema(description = "总时长")
private BigDecimal totalTime;
@Schema(description = "报工状态", example = "2")
private Integer reportStatus;
@Schema(description = "备注", example = "随便") @Schema(description = "备注", example = "你猜")
private String remark; private String remark;
@Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "班别", example = "1")
private Integer groupType;
@Schema(description = "报工类型", example = "1")
private String reportType;
private Boolean isEnable; @Schema(description = "报工日期")
private LocalDateTime reportDate;
@Schema(description = "生产报工明细列表")
private List<ProduceReportDetailDO> produceReportDetails;
@Schema(description = "报工日期字符串")
private String reportDateString;
} }

@ -1,12 +1,13 @@
package cn.iocoder.yudao.module.mes.dal.dataobject.producereport; package cn.iocoder.yudao.module.mes.dal.dataobject.producereport;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*; import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
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 * DO
@ -29,40 +30,60 @@ public class ProduceReportDO extends BaseDO {
@TableId @TableId
private Long id; private Long id;
/** /**
* *
*/ */
private String processInstanceId; private String processInstanceId;
/** /**
* ID *
*/ */
private Long workTeamId; private String reportCode;
/** /**
* ID * ID
*/ */
private Long groupId; private Long userId;
/** /**
* * ID
*/ */
private LocalDateTime reportDate; private Long orgId;
/** /**
* *
* <p> *
* {@link TODO mes_org_type }
*/
private String orgType;
/**
*
*/
private String reportTime;
/**
*
*/
private BigDecimal totalTime;
/**
*
*
* {@link TODO mes_record_status } * {@link TODO mes_record_status }
*/ */
private Integer status; private Integer reportStatus;
/**
*
*/
private String remark;
/** /**
* / *
* <p> *
* {@link TODO mes_group_type } * {@link TODO mes_group_type }
*/ */
private Integer groupType; private Integer groupType;
/** /**
* *
*
* {@link TODO mes_produce_report_type }
*/ */
private String remark; private String reportType;
/** /**
* *
*/ */
private Boolean isEnable; private LocalDateTime reportDate;
} }

@ -57,6 +57,9 @@ public interface ProduceReportDetailMapper extends BaseMapperX<ProduceReportDeta
.eq(ProduceReportDetailDO::getReportId, reportId) .eq(ProduceReportDetailDO::getReportId, reportId)
.orderByDesc(ProduceReportDetailDO::getId)); .orderByDesc(ProduceReportDetailDO::getId));
} }
default List<ProduceReportDetailDO> selectListByReportId(Long reportId) {
return selectList(ProduceReportDetailDO::getReportId, reportId);
}
default int deleteByReportId(Long reportId) { default int deleteByReportId(Long reportId) {
return delete(ProduceReportDetailDO::getReportId, reportId); return delete(ProduceReportDetailDO::getReportId, reportId);

@ -1,11 +1,13 @@
package cn.iocoder.yudao.module.mes.dal.mysql.producereport; 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.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportPageReqVO; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDO; import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.*;
/** /**
* Mapper * Mapper
@ -18,14 +20,18 @@ public interface ProduceReportMapper extends BaseMapperX<ProduceReportDO> {
default PageResult<ProduceReportDO> selectPage(ProduceReportPageReqVO reqVO) { default PageResult<ProduceReportDO> selectPage(ProduceReportPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProduceReportDO>() return selectPage(reqVO, new LambdaQueryWrapperX<ProduceReportDO>()
.eqIfPresent(ProduceReportDO::getProcessInstanceId, reqVO.getProcessInstanceId()) .eqIfPresent(ProduceReportDO::getProcessInstanceId, reqVO.getProcessInstanceId())
.eqIfPresent(ProduceReportDO::getWorkTeamId, reqVO.getWorkTeamId()) .eqIfPresent(ProduceReportDO::getReportCode, reqVO.getReportCode())
.eqIfPresent(ProduceReportDO::getGroupId, reqVO.getGroupId()) .eqIfPresent(ProduceReportDO::getUserId, reqVO.getUserId())
.betweenIfPresent(ProduceReportDO::getReportDate, reqVO.getReportDate()) .eqIfPresent(ProduceReportDO::getOrgId, reqVO.getOrgId())
.eqIfPresent(ProduceReportDO::getStatus, reqVO.getStatus()) .eqIfPresent(ProduceReportDO::getOrgType, reqVO.getOrgType())
.eqIfPresent(ProduceReportDO::getGroupType, reqVO.getGroupType()) .betweenIfPresent(ProduceReportDO::getReportTime, reqVO.getReportTime())
.betweenIfPresent(ProduceReportDO::getTotalTime, reqVO.getTotalTime())
.eqIfPresent(ProduceReportDO::getReportStatus, reqVO.getReportStatus())
.eqIfPresent(ProduceReportDO::getRemark, reqVO.getRemark()) .eqIfPresent(ProduceReportDO::getRemark, reqVO.getRemark())
.eqIfPresent(ProduceReportDO::getIsEnable, reqVO.getIsEnable())
.betweenIfPresent(ProduceReportDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(ProduceReportDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(ProduceReportDO::getGroupType, reqVO.getGroupType())
.eqIfPresent(ProduceReportDO::getReportType, reqVO.getReportType())
.betweenIfPresent(ProduceReportDO::getReportDate, reqVO.getReportDate())
.orderByDesc(ProduceReportDO::getId)); .orderByDesc(ProduceReportDO::getId));
} }

@ -63,4 +63,5 @@ public interface ProduceReportDetailService {
List<ProduceReportDetailRespVO> buildVOList(List<ProduceReportDetailDO> list); List<ProduceReportDetailRespVO> buildVOList(List<ProduceReportDetailDO> list);
void updateStatus(Long id, Integer status); void updateStatus(Long id, Integer status);
void updateStatus2( ProduceReportDetailDO reportDetailDO, Integer status);
} }

@ -225,4 +225,54 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic
else throw exception(PLAN_NOT_EXISTS); else throw exception(PLAN_NOT_EXISTS);
} }
} }
//通过报工单
@Override
@Transactional
public void updateStatus2( ProduceReportDetailDO reportDetailDO, Integer status) {
reportDetailDO.setReportStatus(status);
produceReportDetailMapper.updateById(reportDetailDO);
//分配给开工中的计划
List<Integer> statusList = new ArrayList<>();
statusList.add(PlanStatusEnum..getValue());
List<PlanDO> planList = planService.getPlanByStatusAndProduct(statusList,reportDetailDO.getProductId());
if(planList!=null && planList.size()>0){
//该种产品只有一个计划在开工
if(planList.size()==1){
WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO()
.setReportId(reportDetailDO.getId()).setPlanId(planList.get(0).getId())
.setProductId(reportDetailDO.getProductId())
.setQualityNumberPlan(reportDetailDO.getQualityNumber())
.setWasteNumberPlan(reportDetailDO.getWasteNumber());
workReportPlanService.createWorkReportPlan(saveReqVO);
}
else{
MathContext mc = new MathContext(0, RoundingMode.HALF_UP);
long totalNeed = 0;
Map<Long, Long> planDOMap = new HashMap<>();
for (PlanDO plan : planList) {
BigDecimal finishNumber = workReportPlanService.selectSumBy(plan.getId(),reportDetailDO.getOrgType());
long planNeed = plan.getPlanNumber() > finishNumber.longValue() ? plan.getPlanNumber() - finishNumber.longValue(): 0;
totalNeed += planNeed;
planDOMap.put(plan.getId(), planNeed);
}
//根据计划各自的需求比例分配给计划
for (Long planId : planDOMap.keySet()) {
Long planNeed = planDOMap.get(planId);
if(planNeed>0){
BigDecimal planNumber = reportDetailDO.getQualityNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc);
BigDecimal wasteNumber = reportDetailDO.getWasteNumber().multiply(BigDecimal.valueOf(planNeed/totalNeed),mc);
WorkReportPlanSaveReqVO saveReqVO = new WorkReportPlanSaveReqVO()
.setReportId(reportDetailDO.getId()).setPlanId(planId)
.setProductId(reportDetailDO.getProductId())
.setQualityNumberPlan(planNumber)
.setWasteNumberPlan(wasteNumber);
workReportPlanService.createWorkReportPlan(saveReqVO);
}
}
}
}
else throw exception(PLAN_NOT_EXISTS);
}
} }

@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.mes.service.producereport; package cn.iocoder.yudao.module.mes.service.producereport;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportSaveReqVO;
@ -8,6 +7,7 @@ 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.dal.dataobject.producereport.ProduceReportDetailDO;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List;
/** /**
* Service * Service
@ -57,42 +57,11 @@ public interface ProduceReportService {
// ==================== 子表(生产报工明细) ==================== // ==================== 子表(生产报工明细) ====================
/** /**
* *
* *
* @param pageReqVO
* @param reportId id * @param reportId id
* @return * @return
*/
PageResult<ProduceReportDetailDO> getProduceReportDetailPage(PageParam pageReqVO, Long reportId);
/**
*
*
* @param produceReportDetail
* @return
*/ */
Long createProduceReportDetail(@Valid ProduceReportDetailDO produceReportDetail); List<ProduceReportDetailDO> getProduceReportDetailListByReportId(Long reportId);
void updateStatus(Long id, Integer status);
/**
*
*
* @param produceReportDetail
*/
void updateProduceReportDetail(@Valid ProduceReportDetailDO produceReportDetail);
/**
*
*
* @param id
*/
void deleteProduceReportDetail(Long id);
/**
*
*
* @param id
* @return
*/
ProduceReportDetailDO getProduceReportDetail(Long id);
} }

@ -1,22 +1,24 @@
package cn.iocoder.yudao.module.mes.service.producereport; package cn.iocoder.yudao.module.mes.service.producereport;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.changerecord.vo.ChangeTypeEnum;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ProduceReportSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.producereport.vo.ReportStatusEnum;
import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDO; 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.dal.dataobject.producereport.ProduceReportDetailDO;
import cn.iocoder.yudao.module.mes.dal.mysql.producereport.ProduceReportDetailMapper; import cn.iocoder.yudao.module.mes.dal.mysql.producereport.ProduceReportDetailMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.producereport.ProduceReportMapper; import cn.iocoder.yudao.module.mes.dal.mysql.producereport.ProduceReportMapper;
import cn.iocoder.yudao.module.mes.service.changerecord.ProduceReportChangeRecordService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PRODUCE_REPORT_DETAIL_NOT_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PRODUCE_REPORT_NOT_EXISTS; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.PRODUCE_REPORT_NOT_EXISTS;
/** /**
@ -34,21 +36,29 @@ public class ProduceReportServiceImpl implements ProduceReportService {
private ProduceReportDetailMapper produceReportDetailMapper; private ProduceReportDetailMapper produceReportDetailMapper;
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Long createProduceReport(ProduceReportSaveReqVO createReqVO) { public Long createProduceReport(ProduceReportSaveReqVO createReqVO) {
// 插入 // 插入
ProduceReportDO produceReport = BeanUtils.toBean(createReqVO, ProduceReportDO.class); ProduceReportDO produceReport = BeanUtils.toBean(createReqVO, ProduceReportDO.class);
produceReportMapper.insert(produceReport); produceReportMapper.insert(produceReport);
// 插入子表
createProduceReportDetailList( produceReport, createReqVO.getProduceReportDetails());
// 返回 // 返回
return produceReport.getId(); return produceReport.getId();
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void updateProduceReport(ProduceReportSaveReqVO updateReqVO) { public void updateProduceReport(ProduceReportSaveReqVO updateReqVO) {
// 校验存在 // 校验存在
validateProduceReportExists(updateReqVO.getId()); validateProduceReportExists(updateReqVO.getId());
// 更新 // 更新
ProduceReportDO updateObj = BeanUtils.toBean(updateReqVO, ProduceReportDO.class); ProduceReportDO updateObj = BeanUtils.toBean(updateReqVO, ProduceReportDO.class);
produceReportMapper.updateById(updateObj); produceReportMapper.updateById(updateObj);
// 更新子表
updateProduceReportDetailList(updateObj, updateReqVO.getProduceReportDetails());
} }
@Override @Override
@ -82,45 +92,49 @@ public class ProduceReportServiceImpl implements ProduceReportService {
// ==================== 子表(生产报工明细) ==================== // ==================== 子表(生产报工明细) ====================
@Override @Override
public PageResult<ProduceReportDetailDO> getProduceReportDetailPage(PageParam pageReqVO, Long reportId) { public List<ProduceReportDetailDO> getProduceReportDetailListByReportId(Long reportId) {
return produceReportDetailMapper.selectPage(pageReqVO, reportId); return produceReportDetailMapper.selectListByReportId(reportId);
} }
@Override private void createProduceReportDetailList(ProduceReportDO reportDO, List<ProduceReportDetailDO> list) {
public Long createProduceReportDetail(ProduceReportDetailDO produceReportDetail) { list.forEach(o -> o.setReportId(reportDO.getId()).setReportStatus(reportDO.getReportStatus())
produceReportDetailMapper.insert(produceReportDetail); .setReportDate(reportDO.getReportDate()).setGroupType(reportDO.getGroupType())
return produceReportDetail.getId(); .setOrgId(reportDO.getOrgId()).setOrgType(reportDO.getOrgType())
);
produceReportDetailMapper.insertBatch(list);
} }
@Override private void updateProduceReportDetailList(ProduceReportDO reportDO, List<ProduceReportDetailDO> list) {
public void updateProduceReportDetail(ProduceReportDetailDO produceReportDetail) { deleteProduceReportDetailByReportId(reportDO.getId());
// 校验存在 list.forEach(o -> o.setId(null).setReportStatus(reportDO.getReportStatus())
validateProduceReportDetailExists(produceReportDetail.getId()); .setReportDate(reportDO.getReportDate()).setGroupType(reportDO.getGroupType())
// 更新 .setOrgId(reportDO.getOrgId()).setOrgType(reportDO.getOrgType())
produceReportDetailMapper.updateById(produceReportDetail); .setUpdater(null).setUpdateTime(null)
); // 解决更新情况下1id 冲突2updateTime 不更新
createProduceReportDetailList(reportDO, list);
} }
@Override private void deleteProduceReportDetailByReportId(Long reportId) {
public void deleteProduceReportDetail(Long id) { produceReportDetailMapper.deleteByReportId(reportId);
// 校验存在
validateProduceReportDetailExists(id);
// 删除
produceReportDetailMapper.deleteById(id);
} }
@Resource
private ProduceReportChangeRecordService produceReportChangeRecordService;
@Resource
private ProduceReportDetailService reportDetailService;
@Override @Override
public ProduceReportDetailDO getProduceReportDetail(Long id) { @Transactional
return produceReportDetailMapper.selectById(id); public void updateStatus(Long id, Integer status) {
// ProduceReportDO reportDO = produceReportMapper.selectById(id);
// if(reportDO==null) throw exception(PRODUCE_REPORT_NOT_EXISTS);
if(status.equals(ReportStatusEnum..getValue())){
produceReportChangeRecordService.saveChange(id,"", "", ChangeTypeEnum..getValue());
} }
if(status.equals(ReportStatusEnum..getValue())) {
private void validateProduceReportDetailExists(Long id) { produceReportChangeRecordService.saveChange(id, "", "", ChangeTypeEnum..getValue());
if (produceReportDetailMapper.selectById(id) == null) { List<ProduceReportDetailDO> list = getProduceReportDetailListByReportId(id);
throw exception(PRODUCE_REPORT_DETAIL_NOT_EXISTS); for (ProduceReportDetailDO detail: list) {
reportDetailService.updateStatus2(detail,status);
} }
} }
private void deleteProduceReportDetailByReportId(Long reportId) {
produceReportDetailMapper.deleteByReportId(reportId);
} }
} }

@ -4,6 +4,7 @@ import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean; 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.framework.test.core.ut.BaseDbUnitTest;
@ -12,9 +13,8 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.producereport.ProduceReportDO;
import cn.iocoder.yudao.module.mes.dal.mysql.producereport.ProduceReportMapper; import cn.iocoder.yudao.module.mes.dal.mysql.producereport.ProduceReportMapper;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.context.annotation.Import;
import java.util.*; import java.util.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -111,45 +111,61 @@ public class ProduceReportServiceImplTest extends BaseDbUnitTest {
// mock 数据 // mock 数据
ProduceReportDO dbProduceReport = randomPojo(ProduceReportDO.class, o -> { // 等会查询到 ProduceReportDO dbProduceReport = randomPojo(ProduceReportDO.class, o -> { // 等会查询到
o.setProcessInstanceId(null); o.setProcessInstanceId(null);
o.setWorkTeamId(null); o.setReportCode(null);
o.setGroupId(null); o.setUserId(null);
o.setReportDate(null); o.setOrgId(null);
o.setStatus(null); o.setOrgType(null);
o.setGroupType(null); o.setReportTime(null);
o.setTotalTime(null);
o.setReportStatus(null);
o.setRemark(null); o.setRemark(null);
o.setIsEnable(null);
o.setCreateTime(null); o.setCreateTime(null);
o.setGroupType(null);
o.setReportType(null);
o.setReportDate(null);
}); });
produceReportMapper.insert(dbProduceReport); produceReportMapper.insert(dbProduceReport);
// 测试 processInstanceId 不匹配 // 测试 processInstanceId 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setProcessInstanceId(null))); produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setProcessInstanceId(null)));
// 测试 workTeamId 不匹配 // 测试 reportCode 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setWorkTeamId(null))); produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setReportCode(null)));
// 测试 groupId 不匹配 // 测试 userId 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setGroupId(null))); produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setUserId(null)));
// 测试 reportDate 不匹配 // 测试 orgId 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setReportDate(null))); produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setOrgId(null)));
// 测试 status 不匹配 // 测试 orgType 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setStatus(null))); produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setOrgType(null)));
// 测试 groupType 不匹配 // 测试 reportTime 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setGroupType(null))); produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setReportTime(null)));
// 测试 totalTime 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setTotalTime(null)));
// 测试 reportStatus 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setReportStatus(null)));
// 测试 remark 不匹配 // 测试 remark 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setRemark(null))); produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setRemark(null)));
// 测试 isEnable 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setIsEnable(null)));
// 测试 createTime 不匹配 // 测试 createTime 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setCreateTime(null))); produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setCreateTime(null)));
// 测试 groupType 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setGroupType(null)));
// 测试 reportType 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setReportType(null)));
// 测试 reportDate 不匹配
produceReportMapper.insert(cloneIgnoreId(dbProduceReport, o -> o.setReportDate(null)));
// 准备参数 // 准备参数
ProduceReportPageReqVO reqVO = new ProduceReportPageReqVO(); ProduceReportPageReqVO reqVO = new ProduceReportPageReqVO();
reqVO.setProcessInstanceId(null); reqVO.setProcessInstanceId(null);
reqVO.setWorkTeamId(null); reqVO.setReportCode(null);
reqVO.setGroupId(null); reqVO.setUserId(null);
reqVO.setReportDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); reqVO.setOrgId(null);
reqVO.setStatus(null); reqVO.setOrgType(null);
reqVO.setGroupType(null); reqVO.setReportTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setTotalTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setReportStatus(null);
reqVO.setRemark(null); reqVO.setRemark(null);
reqVO.setIsEnable(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
reqVO.setGroupType(null);
reqVO.setReportType(null);
reqVO.setReportDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用 // 调用
PageResult<ProduceReportDO> pageResult = produceReportService.getProduceReportPage(reqVO); PageResult<ProduceReportDO> pageResult = produceReportService.getProduceReportPage(reqVO);

@ -267,22 +267,27 @@ CREATE TABLE IF NOT EXISTS "mes_produce_report"
( (
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
"process_instance_id" varchar, "process_instance_id" varchar,
"work_team_id" bigint NOT NULL, "report_code" varchar,
"group_id" bigint NOT NULL, "user_id" bigint NOT NULL,
"report_date" varchar NOT NULL, "org_id" bigint NOT NULL,
"status" int NOT NULL, "org_type" varchar,
"group_type" int NOT NULL, "report_time" varchar,
"total_time" varchar,
"report_status" int,
"remark" varchar, "remark" varchar,
"is_enable" bit NOT NULL,
"creator" varchar DEFAULT '', "creator" varchar DEFAULT '',
"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updater" varchar DEFAULT '', "updater" varchar DEFAULT '',
"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
"deleted" bit NOT NULL DEFAULT FALSE, "deleted" bit NOT NULL DEFAULT FALSE,
"tenant_id" bigint, "tenant_id" bigint,
"group_type" int,
"report_type" varchar,
"report_date" varchar,
PRIMARY KEY ("id") PRIMARY KEY ("id")
) COMMENT '生产报工单'; ) COMMENT '生产报工单';
CREATE TABLE IF NOT EXISTS "mes_produce_report_detail" CREATE TABLE IF NOT EXISTS "mes_produce_report_detail"
( (
"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,

Loading…
Cancel
Save