add report
parent
7bf09e7da1
commit
6d9be1cd27
@ -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,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));
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue