1、executor微服务错误码整理;2、分堆打包mycat环境封包异常修复;3、订单包裹详情分页新结构适配;4、板材管理移除权限校验;

This commit is contained in:
gaoqr
2026-04-28 10:43:48 +08:00
parent 8cebcf15fa
commit e11f8a40e0
90 changed files with 346 additions and 5108 deletions
@@ -1,35 +0,0 @@
package com.cf.imes.module.system.api.process;
import com.cf.imes.module.system.api.process.dto.ProcessDTO;
import com.cf.imes.module.system.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.math.BigDecimal;
import java.util.List;
@FeignClient(name = ApiConstants.NAME) // TODO 晨丰:fallbackFactory =
@Tag(name = "RPC 服务 - 工序")
public interface ProcessApi {
String PREFIX = ApiConstants.PREFIX + "/process";
@GetMapping(PREFIX + "/getProcess")
@Operation(summary = "查看当前工序的信息")
@Parameter(name = "processId", description = "工序ID", required = true, example = "1024")
BigDecimal getProcess(@RequestParam("processId") Long processId);
@GetMapping(PREFIX + "/getUserProcess")
@Operation(summary = "查看当前工序的信息")
@Parameter(name = "userId", description = "用户ID", required = true, example = "1")
List<ProcessDTO> getUserProcess(@RequestParam("userId") Long userId);
}
@@ -1,29 +0,0 @@
package com.cf.imes.module.system.api.process;
import com.cf.imes.module.system.api.process.dto.ProcessListReqDTO;
import com.cf.imes.module.system.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(name = ApiConstants.NAME) // TODO 晨丰:fallbackFactory =
@Tag(name = "RPC 服务 - 工序以及工序组")
public interface ProcessGroupApi {
String PREFIX = ApiConstants.PREFIX + "/process-group";
@GetMapping(PREFIX + "/get")
@Operation(summary = "工序组是否存在")
@Parameter(name = "groupId", description = "工序组编号", required = true, example = "1024")
Boolean getProcessGroup(@RequestParam("groupId") Long groupId);
@GetMapping(PREFIX + "/getGroup")
@Operation(summary = "工序组具体信息")
@Parameter(name = "groupId", description = "工序组编号", required = true, example = "1024")
ProcessListReqDTO getProcessGroupDetail(@RequestParam("groupId") Long groupId);
}
@@ -1,28 +0,0 @@
package com.cf.imes.module.system.api.process.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ProcessDTO {
@Schema(description = "工序ID")
private Long id;
@Schema(description = "工序名称")
private String name;
@Schema(description = "工序类型")
private Integer type;
}
@@ -1,32 +0,0 @@
package com.cf.imes.module.system.api.process.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "RPC 服务 - ProcessGroup 工序 Response DTO")
@Data
public class ProcessListReqDTO {
@Schema(description = "工序组 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10725")
private Long id;
@Schema(description = "工序组名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
private String name;
@Schema(description = "是否默认工序组:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isDefault;
@Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED)
private Short sort;
@Schema(description = "明细,工序 ID 逗号分隔", requiredMode = Schema.RequiredMode.REQUIRED)
private String items;
@Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便")
private String description;
@Schema(description = "工序列表", requiredMode = Schema.RequiredMode.REQUIRED)
private List<ProcessRespDTO> lists;
}
@@ -1,55 +0,0 @@
package com.cf.imes.module.system.api.process.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Schema(description = "RPC 服务 - Process 工序 Response DTO")
@Data
public class ProcessRespDTO {
@Schema(description = "工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20453")
private Long id;
@Schema(description = "工序名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
private String name;
@Schema(description = "计件工资", requiredMode = Schema.RequiredMode.REQUIRED)
private Double pieceRate;
@Schema(description = "计件类型:1 数量 2 长度 3 平方 4 宽 5 高 6 体积 7 订单金额百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private Integer pieceType;
@Schema(description = "工序类型:0 全部加工 1 开料 2 部件加工 3 异形封边 4 分堆 5 打包 6 出库 7 组件加工 8 板材", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
private Integer type;
@Schema(description = "是否推送终端客户:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isCustom;
private Boolean isDealer;
@Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED)
private Short sort;
@Schema(description = "小时产量", requiredMode = Schema.RequiredMode.REQUIRED)
private Double hourCapacity;
@Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED)
private String unit;
@Schema(description = "是否启用:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isEnabled;
@Schema(description = "准备时间", requiredMode = Schema.RequiredMode.REQUIRED)
private Double prepareTime;
@Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便")
private String description;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
@Schema(description = "工序中的用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12,13")
private String users;
}
@@ -1,56 +0,0 @@
package com.cf.imes.module.system.api.process;
import com.cf.imes.framework.common.enums.ProcessProcessingTypeEnum;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.system.api.process.dto.ProcessDTO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.module.system.dal.mysql.process.ProcessMapper;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import jakarta.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
@RestController // 提供 RESTful API 接口,给 Feign 调用
@Validated
public class ProcessApiImpl implements ProcessApi {
@Resource
private ProcessMapper processMapper;
@Override
public BigDecimal getProcess(Long processId) {
ProcessDO processDO = processMapper.selectByType(processId,getUserOrganId());
return processDO == null ? BigDecimal.ZERO : processDO.getPieceRate();
}
@Override
public List<ProcessDTO> getUserProcess(Long userId) {
List<ProcessDO> processDOS = processMapper.selectProcessList(getUserOrganId(), userId)
.stream()
.filter(f-> Objects.equals(f.getType(),ProcessProcessingTypeEnum.CUTTINGMATERIALS.getNumber()))
.toList();
return BeanUtils.toBean(processDOS,ProcessDTO.class);
}
}
@@ -1,55 +0,0 @@
package com.cf.imes.module.system.api.process;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.system.api.process.dto.ProcessListReqDTO;
import com.cf.imes.module.system.api.process.dto.ProcessRespDTO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessGroupDO;
import com.cf.imes.module.system.dal.mysql.process.ProcessGroupMapper;
import com.cf.imes.module.system.dal.mysql.process.ProcessMapper;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import jakarta.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.PROCESS_GROUP_NOT_EXISTS;
@RestController // 提供 RESTful API 接口,给 Feign 调用
@Validated
public class ProcessGroupApiImpl implements ProcessGroupApi {
@Resource
private ProcessGroupMapper processGroupMapper;
@Resource
private ProcessMapper processMapper;
@Override
public Boolean getProcessGroup(Long groupId) {
if (processGroupMapper.selectById(groupId) == null)
return false;
return true;
}
@Override
public ProcessListReqDTO getProcessGroupDetail(Long groupId) {
ProcessGroupDO processGroupDO = processGroupMapper.selectById(groupId);
if (processGroupDO == null)
throw new ServiceException(PROCESS_GROUP_NOT_EXISTS);
String[] items = processGroupDO.getItems().split(",");
List<ProcessRespDTO> lists = new ArrayList<>();
ProcessListReqDTO processListReqDTO = BeanUtils.toBean(processGroupDO, ProcessListReqDTO.class).setLists(lists);
for (String item : items) {
ProcessDO processDO = processMapper.selectById(Long.parseLong(item));
processListReqDTO.getLists().add(BeanUtils.toBean(processDO, ProcessRespDTO.class));
}
return processListReqDTO;
}
}
@@ -1,144 +0,0 @@
package com.cf.imes.module.system.controller.admin.process;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import jakarta.servlet.http.HttpServletResponse;
import com.cf.imes.module.system.controller.admin.process.vo.processUser.UserProcessRespVO;
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 com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import static com.cf.imes.framework.common.pojo.CommonResult.success;
import com.cf.imes.framework.excel.core.util.ExcelUtils;
import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.cf.imes.module.system.controller.admin.process.vo.process.*;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.module.system.service.process.ProcessService;
@Tag(name = "管理后台 - 工序信息")
@RestController
@RequestMapping("/system/process")
@Validated
public class ProcessController {
@Resource
private ProcessService processService;
@PostMapping("/create")
@Operation(summary = "新建工序信息")
@PreAuthorize("@ss.hasPermission('system:process:create')")
public CommonResult<Long> createProcess(@Valid @RequestBody ProcessUserSaveReqVO createReqVO) {
return success(processService.createProcess(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新工序信息")
@PreAuthorize("@ss.hasPermission('system:process:update')")
public CommonResult<Boolean> updateProcess(@Valid @RequestBody ProcessUserSaveReqVO updateReqVO) {
processService.updateProcess(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除工序信息")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('system:process:delete')")
public CommonResult<Boolean> deleteProcess(@RequestParam("id") Long id) {
processService.deleteProcess(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得工序信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('system:process:query')")
public CommonResult<ProcessUserRespVO> getProcess(@RequestParam("id") Long id) {
ProcessUserRespVO processUser = processService.getProcess(id);
return success(BeanUtils.toBean(processUser, ProcessUserRespVO.class));
}
@GetMapping("/allGet")
@Operation(summary = "获得工序全部信息")
@PreAuthorize("@ss.hasPermission('system:process:query')")
public CommonResult<PageResult<ProcessDO>> getProcessAll(@Valid ProcessPageReqVO pageReqVO) {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
PageResult<ProcessDO> pageResult = processService.getProcessPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProcessDO.class));
}
@GetMapping("/getAll")
@Operation(summary = "获得所有工序信息")
@PreAuthorize("@ss.hasPermission('system:process:query')")
public CommonResult<List<ProcessDO>> getAllProcess() {
List<ProcessDO> processUser = processService.getAllProcess();
return success(BeanUtils.toBean(processUser, ProcessDO.class));
}
@GetMapping("/page")
@Operation(summary = "获得工序信息分页")
@PreAuthorize("@ss.hasPermission('system:process:query')")
public CommonResult<PageResult<ProcessRespVO>> getProcessPage(@Valid ProcessPageReqVO pageReqVO) {
PageResult<ProcessRespVO> pageResult = processService.getProcessPageAll(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProcessRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出工序信息 Excel")
@PreAuthorize("@ss.hasPermission('system:process:export')")
@OperateLog(type = EXPORT)
public void exportProcessExcel(@Valid ProcessPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ProcessDO> list = processService.getProcessPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "工序信息表.xls", "数据", ProcessRespVO.class,
BeanUtils.toBean(list, ProcessRespVO.class));
}
@GetMapping("/select")
@Operation(summary = "查看当前登录用户的组织的工序信息")
@Parameter(name = "userId", description = "当前登录的用户ID", required = true, example = "1")
@PreAuthorize("@ss.hasAnyPermissions('system:process:query','product:process:query')")
public CommonResult<List<ProcessDO>> getUserPage(@Valid @RequestParam("userId") Long userId) {
return success(processService.getUserProcess(userId));
}
@GetMapping("/getUserProcess")
@Operation(summary = "获取当前组织的工序名称和加工人名称")
@PreAuthorize("@ss.hasPermission('manage:process:query')")
public CommonResult<UserProcessRespVO> getUserProcess() {
return success(processService.getUserProcessName());
}
}
@@ -1,114 +0,0 @@
package com.cf.imes.module.system.controller.admin.process;
import com.cf.imes.framework.common.exception.ErrorCode;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupPageReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupRespVO;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupSaveReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessListSaveReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessRespVO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessGroupDO;
import com.cf.imes.module.system.service.process.ProcessGroupService;
import com.cf.imes.module.system.service.process.ProcessService;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.springframework.transaction.annotation.Transactional;
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 com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import static com.cf.imes.framework.common.pojo.CommonResult.success;
import com.cf.imes.framework.excel.core.util.ExcelUtils;
import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
@Tag(name = "管理后台 - 工序组")
@RestController
@RequestMapping("/system/process-group")
@Validated
public class ProcessGroupController {
@Resource
private ProcessGroupService processGroupService;
@PostMapping("/create")
@Operation(summary = "创建工序组")
@PreAuthorize("@ss.hasPermission('system:process-group:create')")
@Transactional(rollbackFor = Exception.class)
public CommonResult<Long> createProcessGroup(@Valid @RequestBody ProcessGroupSaveReqVO createReqVOLists) {
return success(processGroupService.createProcessGroup(createReqVOLists));
}
@PutMapping("/update")
@Operation(summary = "更新工序组")
@PreAuthorize("@ss.hasPermission('system:process-group:update')")
public CommonResult<Boolean> updateProcessGroup(@Valid @RequestBody ProcessGroupSaveReqVO updateReqVO) {
processGroupService.updateProcessGroup(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除工序组")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('system:process-group:delete')")
public CommonResult<Boolean> deleteProcessGroup(@RequestParam("id") Long id) {
processGroupService.deleteProcessGroup(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得工序组")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('system:process-group:query')")
public CommonResult<ProcessListSaveReqVO> getProcessGroup(@RequestParam("id") Long id) {
ProcessListSaveReqVO processGroup = processGroupService.getProcessGroup(id);
return success(BeanUtils.toBean(processGroup, ProcessListSaveReqVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得工序组分页")
@PreAuthorize("@ss.hasPermission('system:process-group:query')")
public CommonResult<PageResult<ProcessGroupRespVO>> getProcessGroupPage(@Valid ProcessGroupPageReqVO pageReqVO) {
PageResult<ProcessGroupDO> pageResult = processGroupService.getProcessGroupPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProcessGroupRespVO.class));
}
@GetMapping({"/list-all-simple","/simple-list"})
@Operation(summary = "获得工序组全部")
@Parameter(name = "name", description = "工序组名称", required = false, example = "xxx")
@PreAuthorize("@ss.hasPermission('system:process-group:query')")
public CommonResult<List<ProcessGroupRespVO>> getProcessGroupAll(@RequestParam(required = false, value = "name") String name) {
return success(processGroupService.getProcessGroupList(name));
}
@GetMapping("/export-excel")
@Operation(summary = "导出工序组表")
@PreAuthorize("@ss.hasPermission('system:process-group:export')")
@OperateLog(type = EXPORT)
public void exportProcessGroupExcel(@Valid ProcessGroupPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ProcessGroupDO> list = processGroupService.getProcessGroupPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "工序组表 process_group.xls", "数据", ProcessGroupRespVO.class,
BeanUtils.toBean(list, ProcessGroupRespVO.class));
}
}
@@ -1,44 +0,0 @@
package com.cf.imes.module.system.controller.admin.process.vo.group;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.cf.imes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 工序组表 process_group分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProcessGroupPageReqVO extends PageParam {
@Schema(description = "组织id", example = "1")
private Long organId;
@Schema(description = "工序组名称", example = "赵六")
private String name;
@Schema(description = "是否默认工序组:0 否 1 是")
private Boolean isDefault;
@Schema(description = "排序优先级")
private Short sort;
@Schema(description = "明细,工序 ID 逗号分隔")
private String items;
@Schema(description = "描述", example = "随便")
private String description;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "field", example = "field")
private String field;
@Schema(description = "order", example = "order")
private String order;
}
@@ -1,42 +0,0 @@
package com.cf.imes.module.system.controller.admin.process.vo.group;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 工序组表 process_group Response VO")
@Data
@ExcelIgnoreUnannotated
public class ProcessGroupRespVO {
@Schema(description = "工序组 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10725")
@ExcelProperty("工序组 ID")
private Long id;
@Schema(description = "工序组名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@ExcelProperty("工序组名称")
private String name;
@Schema(description = "是否默认工序组:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否默认工序组:0 否 1 是")
private Boolean isDefault;
@Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("排序优先级")
private Short sort;
@Schema(description = "明细,工序 ID 逗号分隔", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("明细,工序 ID 逗号分隔")
private String items;
@Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便")
@ExcelProperty("描述")
private String description;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}
@@ -1,38 +0,0 @@
package com.cf.imes.module.system.controller.admin.process.vo.group;
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.util.List;
@Schema(description = "管理后台 - 工序组表 process_group新增/修改 Request VO")
@Data
public class ProcessGroupSaveReqVO {
@Schema(description = "工序组 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10725")
private Long id;
@Schema(description = "工序组名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@NotEmpty(message = "工序组名称不能为空")
private String name;
@Schema(description = "是否默认工序组:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否默认工序组:0 否 1 是不能为空")
private Boolean isDefault;
@Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED)
private Short sort;
@Schema(description = "明细,工序 ID 逗号分隔", requiredMode = Schema.RequiredMode.REQUIRED)
private String items;
@Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便")
private String description;
@Schema(description = "工序集合", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}{}")
private List<ProcessRespVO> processList;
}
@@ -1,36 +0,0 @@
package com.cf.imes.module.system.controller.admin.process.vo.group;
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.util.List;
@Schema(description = "管理后台 - 工序组新增 Request VO")
@Data
public class ProcessListSaveReqVO {
@Schema(description = "工序组 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10725")
private Long id;
@Schema(description = "工序组名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@NotEmpty(message = "工序组名称不能为空")
private String name;
@Schema(description = "是否默认工序组:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否默认工序组:0 否 1 是不能为空")
private Boolean isDefault;
@Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED)
private Short sort;
@Schema(description = "明细,工序 ID 逗号分隔", requiredMode = Schema.RequiredMode.REQUIRED)
private String items;
@Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便")
private String description;
@Schema(description = "工序列表", requiredMode = Schema.RequiredMode.REQUIRED)
private List<ProcessRespVO> lists;
}
@@ -1,64 +0,0 @@
package com.cf.imes.module.system.controller.admin.process.vo.process;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.cf.imes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 工序信息表 process分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProcessPageReqVO extends PageParam {
@Schema(description = "工序名称", example = "张三")
private String name;
@Schema(description = "计件工资")
private Double pieceRate;
@Schema(description = "计件类型:1 数量 2 长度 3 平方 4 宽 5 高 6 体积 7 订单金额百分比", example = "1")
private Integer pieceType;
@Schema(description = "工序类型:0 全部加工 1 开料 2 部件加工 3 异形封边 4 分堆 5 打包 6 出库 7 组件加工 8 板材", example = "2")
private Integer type;
@Schema(description = "是否推送终端客户:0 否 1 是")
private Boolean isCustom;
@Schema(description = "是否推送经销商:0 否 1 是")
private Boolean isDealer;
@Schema(description = "排序优先级")
private Short sort;
@Schema(description = "小时产量")
private Double hourCapacity;
@Schema(description = "单位")
private String unit;
@Schema(description = "是否启用:0 否 1 是")
private Boolean isEnabled;
@Schema(description = "准备时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Double[] prepareTime;
@Schema(description = "描述", example = "随便")
private String description;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "用户id查询")
private String userId;
@Schema(description = "组织id")
private Long organId;
}
@@ -1,73 +0,0 @@
package com.cf.imes.module.system.controller.admin.process.vo.process;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 工序信息表 process Response VO")
@Data
@ExcelIgnoreUnannotated
public class ProcessRespVO {
@Schema(description = "工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20453")
@ExcelProperty("工序 ID")
private Long id;
@Schema(description = "工序名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("工序名称")
private String name;
@Schema(description = "计件工资", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("计件工资")
private Double pieceRate;
@Schema(description = "计件类型:1 数量 2 长度 3 平方 4 宽 5 高 6 体积 7 订单金额百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("计件类型:1 数量 2 长度 3 平方 4 宽 5 高 6 体积 7 订单金额百分比")
private Integer pieceType;
@Schema(description = "工序类型:0 全部加工 1 开料 2 部件加工 3 异形封边 4 分堆 5 打包 6 出库 7 组件加工 8 板材", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("工序类型:0 全部加工 1 开料 2 部件加工 3 异形封边 4 分堆 5 打包 6 出库 7 组件加工 8 板材")
private Integer type;
@Schema(description = "是否推送终端客户:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否推送终端客户:0 否 1 是")
private Boolean isCustom;
@Schema(description = "是否推送经销商:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否推送经销商:0 否 1 是")
private Boolean isDealer;
@Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("排序优先级")
private Short sort;
@Schema(description = "小时产量", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("小时产量")
private Double hourCapacity;
@Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("单位")
private String unit;
@Schema(description = "是否启用:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否启用:0 否 1 是")
private Boolean isEnabled;
@Schema(description = "准备时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("准备时间")
private Double prepareTime;
@Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便")
@ExcelProperty("描述")
private String description;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "工序中的用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12,13")
private String users;
}
@@ -1,67 +0,0 @@
package com.cf.imes.module.system.controller.admin.process.vo.process;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
@Schema(description = "管理后台 - 工序信息表 process新增/修改 Request VO")
@Data
@Valid
public class ProcessSaveReqVO {
@Schema(description = "工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "161")
private Long id;
@Schema(description = "工序名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@NotEmpty(message = "工序名称不能为空")
private String name;
@Schema(description = "计件工资", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "计件工资不能为空")
private Double pieceRate;
@Schema(description = "计件类型:1 数量 2 长度 3 平方 4 宽 5 高 6 体积 7 订单金额百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "计件类型:1 数量 2 长度 3 平方 4 宽 5 高 6 体积 7 订单金额百分比不能为空")
private Integer pieceType;
@Schema(description = "工序类型:0 全部加工 1 开料 2 部件加工 3 异形封边 4 分堆 5 打包 6 出库 7 组件加工 8 板材", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "工序类型:0 全部加工 1 开料 2 部件加工 3 异形封边 4 分堆 5 打包 6 出库 7 组件加工 8 板材不能为空")
private Integer type;
@Schema(description = "是否推送终端客户:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否推送终端客户:0 否 1 是不能为空")
private Boolean isCustom;
@Schema(description = "是否推送经销商:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否推送经销商:0 否 1 是不能为空")
private Boolean isDealer;
@Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "排序优先级不能为空")
private Short sort;
@Schema(description = "小时产量", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "小时产量不能为空")
private Double hourCapacity;
@Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "单位不能为空")
private String unit;
@Schema(description = "是否启用:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否启用:0 否 1 是不能为空")
private Boolean isEnabled;
@Schema(description = "准备时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "准备时间不能为空")
private Double prepareTime;
@Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对")
@NotEmpty(message = "描述不能为空")
private String description;
}
@@ -1,80 +0,0 @@
package com.cf.imes.module.system.controller.admin.process.vo.process;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @projectName: cf_imes_server
* @author: 晨丰科技
* @date: 2024/3/7 11:39
*/
@Schema(description = "管理后台 - 工序信息表 process Response VO")
@Data
@ExcelIgnoreUnannotated
public class ProcessUserRespVO {
@Schema(description = "工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20453")
@ExcelProperty("工序 ID")
private Long id;
@Schema(description = "工序名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("工序名称")
private String name;
@Schema(description = "计件工资", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("计件工资")
private Double pieceRate;
@Schema(description = "计件类型:1 数量 2 长度 3 平方 4 宽 5 高 6 体积 7 订单金额百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("计件类型:1 数量 2 长度 3 平方 4 宽 5 高 6 体积 7 订单金额百分比")
private Integer pieceType;
@Schema(description = "工序类型:0 全部加工 1 开料 2 部件加工 3 异形封边 4 分堆 5 打包 6 出库 7 组件加工 8 板材", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("工序类型:0 全部加工 1 开料 2 部件加工 3 异形封边 4 分堆 5 打包 6 出库 7 组件加工 8 板材")
private Integer type;
@Schema(description = "是否推送终端客户:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否推送终端客户:0 否 1 是")
private Boolean isCustom;
@Schema(description = "是否推送经销商:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否推送经销商:0 否 1 是")
private Boolean isDealer;
@Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("排序优先级")
private Short sort;
@Schema(description = "小时产量", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("小时产量")
private Double hourCapacity;
@Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("单位")
private String unit;
@Schema(description = "是否启用:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("是否启用:0 否 1 是")
private Boolean isEnabled;
@Schema(description = "准备时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("准备时间")
private Double prepareTime;
@Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便")
@ExcelProperty("描述")
private String description;
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12,13")
@ExcelProperty("用户ID")
private String Users;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}
@@ -1,69 +0,0 @@
package com.cf.imes.module.system.controller.admin.process.vo.process;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
@Schema(description = "管理后台 - 工序信息 process新增/修改 Request VO")
@Data
@Valid
public class ProcessUserSaveReqVO {
@Schema(description = "工序 ID", example = "161")
private Long id;
@Schema(description = "工序名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@NotEmpty(message = "工序名称不能为空")
private String name;
@Schema(description = "计件工资", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "计件工资不能为空")
private Double pieceRate;
@Schema(description = "计件类型:1 数量 2 长度 3 平方 4 宽 5 高 6 体积 7 订单金额百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "计件类型:1 数量 2 长度 3 平方 4 宽 5 高 6 体积 7 订单金额百分比不能为空")
private Integer pieceType;
@Schema(description = "工序类型:0 全部加工 1 开料 2 部件加工 3 异形封边 4 分堆 5 打包 6 出库 7 组件加工 8 板材", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "工序类型:0 全部加工 1 开料 2 部件加工 3 异形封边 4 分堆 5 打包 6 出库 7 组件加工 8 板材不能为空")
private Integer type;
@Schema(description = "是否推送终端客户:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否推送终端客户:0 否 1 是不能为空")
private Boolean isCustom;
@Schema(description = "是否推送经销商:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否推送经销商:0 否 1 是不能为空")
private Boolean isDealer;
@Schema(description = "排序优先级", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "排序优先级不能为空")
private Short sort;
@Schema(description = "小时产量", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "小时产量不能为空")
private Double hourCapacity;
@Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "单位不能为空")
private String unit;
@Schema(description = "是否启用:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "是否启用:0 否 1 是不能为空")
private Boolean isEnabled;
@Schema(description = "准备时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "准备时间不能为空")
private Double prepareTime;
@Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "你说的对")
private String description;
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12,13")
private String users;
@Schema(description = "组织Id", requiredMode = Schema.RequiredMode.REQUIRED, example = "181")
private Long organId;
}
@@ -1,20 +0,0 @@
package com.cf.imes.module.system.controller.admin.process.vo.processUser;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import com.alibaba.excel.annotation.*;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 工序用户表")
@Data
@ExcelIgnoreUnannotated
public class ProcessAndUserRespVO {
@Schema(description = "工序名称")
private String processName;
@Schema(description = "加工人ID")
private Long userId;
}
@@ -1,20 +0,0 @@
package com.cf.imes.module.system.controller.admin.process.vo.processUser;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import jakarta.validation.constraints.NotNull;
@Schema(description = "管理后台 - 工序用户表 process_user新增/修改 Request VO")
@Data
public class ProcessAndUserSaveReqVO {
@Schema(description = "工序 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9416")
@NotNull(message = "工序 ID不能为空")
private Long processId;
@Schema(description = "用户 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24517")
@NotNull(message = "用户 ID不能为空")
private Long userId;
private Long organId;
}
@@ -1,26 +0,0 @@
package com.cf.imes.module.system.controller.admin.process.vo.processUser;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Schema(description = "管理后台 - 工序和加工人信息")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserProcessRespVO {
@Schema(description = "工序名称")
private List<String> processName;
@Schema(description = "加工人")
private List<String> processUser;
}
@@ -1,86 +0,0 @@
package com.cf.imes.module.system.dal.dataobject.process;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
/**
* 工序信息表 process DO
*
* @author 晨丰科技
*/
@TableName("process")
@KeySequence("process_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProcessDO extends BaseDO {
/**
* 工序 ID
*/
@TableId
private Long id;
/**
* 工序名称
*/
private String name;
/**
* 计件工资
*/
private BigDecimal pieceRate;
/**
* 计件类型:1 数量 2 长度 3 平方 4 宽 5 高 6 体积 7 订单金额百分比
*/
private Integer pieceType;
/**
* 工序类型:0 全部加工 1 开料 2 部件加工 3 异形封边 4 分堆 5 打包 6 出库 7 组件加工 8 板材
*/
private Integer type;
/**
* 是否推送终端客户:0 否 1 是
*/
private Boolean isCustom;
/**
* 是否推送经销商:0 否 1 是
*/
private Boolean isDealer;
/**
* 排序优先级
*/
private Short sort;
/**
* 小时产量
*/
private Double hourCapacity;
/**
* 单位
*/
private String unit;
/**
* 是否启用:0 否 1 是
*/
private Boolean isEnabled;
/**
* 准备时间
*/
private Double prepareTime;
/**
* 描述
*/
private String description;
/**
* 组织id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
}
@@ -1,53 +0,0 @@
package com.cf.imes.module.system.dal.dataobject.process;
import lombok.*;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
/**
* 工序组表 process_group DO
*
* @author 晨丰科技
*/
@TableName("process_group")
@KeySequence("process_group_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProcessGroupDO extends BaseDO {
/**
* 工序组 ID
*/
@TableId
private Long id;
/**
* 组织id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 工序组名称
*/
private String name;
/**
* 是否默认工序组:0 否 1 是
*/
private Boolean isDefault;
/**
* 排序优先级
*/
private Short sort;
/**
* 明细,工序 ID 逗号分隔
*/
private String items;
/**
* 描述
*/
private String description;
}
@@ -1,37 +0,0 @@
package com.cf.imes.module.system.dal.dataobject.process;
import lombok.*;
import java.util.*;
import com.baomidou.mybatisplus.annotation.*;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
/**
* 工序用户表 process_user DO
*
* @author 晨丰科技
*/
@TableName("process_user")
@KeySequence("process_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProcessUserDO {
/**
* 组织 ID
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long organId;
/**
* 工序 ID
*/
private Long processId;
/**
* 用户 ID
*/
private Long userId;
}
@@ -1,66 +0,0 @@
package com.cf.imes.module.system.dal.mysql.process;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupPageReqVO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessGroupDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 工序组表 process_group Mapper
*
* @author 晨丰科技
*/
@Mapper
public interface ProcessGroupMapper extends BaseMapperX<ProcessGroupDO> {
default PageResult<ProcessGroupDO> selectPage(ProcessGroupPageReqVO reqVO) {
LambdaQueryWrapperX<ProcessGroupDO> queryWrapper = new LambdaQueryWrapperX<ProcessGroupDO>()
.likeIfPresent(ProcessGroupDO::getName, reqVO.getName())
.eqIfPresent(ProcessGroupDO::getIsDefault, reqVO.getIsDefault())
.eqIfPresent(ProcessGroupDO::getSort, reqVO.getSort())
.eqIfPresent(ProcessGroupDO::getItems, reqVO.getItems())
.eqIfPresent(ProcessGroupDO::getOrganId, reqVO.getOrganId())
.eqIfPresent(ProcessGroupDO::getDescription, reqVO.getDescription())
.betweenIfPresent(ProcessGroupDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ProcessGroupDO::getSort);
if (reqVO.getOrder() == null) {
queryWrapper.orderByDesc(ProcessGroupDO::getSort);
}else {
if (reqVO.getOrder().equals("ascend")) {
switch (reqVO.getField()) {
case "name" -> queryWrapper.orderByAsc(ProcessGroupDO::getName);
case "sort" -> queryWrapper.orderByAsc(ProcessGroupDO::getSort);
default -> {
// default 不排序
}
}
}else if (reqVO.getOrder().equals("descend")) {
switch (reqVO.getField()) {
case "name" -> queryWrapper.orderByDesc(ProcessGroupDO::getName);
case "sort" -> queryWrapper.orderByDesc(ProcessGroupDO::getSort);
default -> {
// default 不排序
}
}
}
}
return selectPage(reqVO, queryWrapper);
}
ProcessDO selectOneById(@Param("id") Long id, @Param("organId") Long organId);
int updateIsDefault(@Param("processGroupId") Long processGroupId, @Param("organId") Long organId);
// 模糊匹配items
default List<ProcessGroupDO> selectListByItems(@Param("items") String items) {
return selectList(new LambdaQueryWrapperX<ProcessGroupDO>()
.likeIfPresent(ProcessGroupDO::getItems, items));
}
}
@@ -1,82 +0,0 @@
package com.cf.imes.module.system.dal.mysql.process;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessPageReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.processUser.ProcessAndUserRespVO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessUserDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 工序信息表 process Mapper
*
* @author 晨丰科技
*/
@Mapper
public interface ProcessMapper extends BaseMapperX<ProcessDO> {
default PageResult<ProcessDO> selectPage(ProcessPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProcessDO>()
.likeIfPresent(ProcessDO::getName, reqVO.getName())
.eqIfPresent(ProcessDO::getPieceRate, reqVO.getPieceRate())
.eqIfPresent(ProcessDO::getPieceType, reqVO.getPieceType())
.eqIfPresent(ProcessDO::getType, reqVO.getType())
.eqIfPresent(ProcessDO::getIsCustom, reqVO.getIsCustom())
.eqIfPresent(ProcessDO::getIsDealer, reqVO.getIsDealer())
.eqIfPresent(ProcessDO::getSort, reqVO.getSort())
.eqIfPresent(ProcessDO::getHourCapacity, reqVO.getHourCapacity())
.eqIfPresent(ProcessDO::getUnit, reqVO.getUnit())
.eqIfPresent(ProcessDO::getOrganId, reqVO.getOrganId())
.eqIfPresent(ProcessDO::getIsEnabled, reqVO.getIsEnabled())
.betweenIfPresent(ProcessDO::getPrepareTime, reqVO.getPrepareTime())
.likeIfPresent(ProcessDO::getDescription, reqVO.getDescription())
.betweenIfPresent(ProcessDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ProcessDO::getId));
}
IPage<ProcessDO> selectProcessPage(@Param("page") IPage<ProcessDO> page , @Param("vo") ProcessPageReqVO reqVO);
ProcessDO selectOneById(@Param("id") Long id, @Param("organId") Long organId);
default List<ProcessDO> selectAll(Long organId) {
return selectList(new LambdaQueryWrapperX<ProcessDO>()
// .orderByDesc(ProcessDO::getId)
.eqIfPresent(ProcessDO::getOrganId, organId)
.eqIfPresent(ProcessDO::getIsEnabled, true));
}
int deleteById(@Param("id") Long id);
default List<ProcessDO> selectProcessList(Long organId,Long userId) {
return selectJoinList(ProcessDO.class, new MPJLambdaWrapperX<ProcessDO>()
.leftJoin(ProcessUserDO.class, ProcessUserDO::getProcessId, ProcessDO::getId)
.eq(ProcessUserDO::getUserId, userId)
.eq(ProcessDO::getOrganId, organId)
.eq(ProcessDO::getIsEnabled,true)
.selectAll(ProcessDO.class)
.orderByDesc(ProcessDO::getSort)
.orderByDesc(ProcessDO::getId));
}
default ProcessDO selectByType(Long processId,Long organId) {
return selectOne(new MPJLambdaWrapperX<ProcessDO>()
.eq(ProcessDO::getOrganId, organId)
.eqIfPresent(ProcessDO::getId,processId));
}
List<ProcessAndUserRespVO> selectUserProcess(@Param("organId")Long organId);
}
@@ -1,47 +0,0 @@
package com.cf.imes.module.system.dal.mysql.process;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessUserDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 工序用户表 process_user Mapper
*
* @author 晨丰科技
*/
@Mapper
public interface ProcessUserMapper extends BaseMapperX<ProcessUserDO> {
default List<ProcessUserDO> selectByProcessId(Long processId,Long organId) {
return selectList(new LambdaQueryWrapperX<ProcessUserDO>()
.eq(ProcessUserDO::getProcessId, processId)
.eq(ProcessUserDO::getOrganId, organId));
}
default List<ProcessUserDO> selectByProcessId(Long processId) {
return selectList(new LambdaQueryWrapperX<ProcessUserDO>()
.eq(ProcessUserDO::getProcessId, processId));
}
default List<ProcessUserDO> selectById(Long processId,Long userId) {
return selectList(new LambdaQueryWrapperX<ProcessUserDO>()
.eq(ProcessUserDO::getProcessId, processId)
.eq(ProcessUserDO::getUserId, userId));
}
default ProcessUserDO selectUserByProcessId(Long processId) {
return selectOne(ProcessUserDO::getProcessId, processId);
}
int deleteUserByProcessId(@Param("processId") Long processId);
ProcessDO selectOneById(@Param("processId") Long processId, @Param("organId") Long organId);
}
@@ -1,7 +1,6 @@
package com.cf.imes.module.system.framework.rpc.config;
import com.cf.imes.module.executor.api.customplateno.OrderCustomPlateNoApi;
import com.cf.imes.module.executor.api.orderProcess.OrderProcessApi;
import com.cf.imes.module.executor.api.ordercomponent.OrderComponentApi;
import com.cf.imes.module.executor.api.plan.OrderPlanApi;
import com.cf.imes.module.infra.api.file.FileApi;
@@ -10,7 +9,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Configuration;
@Configuration(proxyBeanMethods = false)
@EnableFeignClients(clients = {FileApi.class, WebSocketSenderApi.class, OrderProcessApi.class,
@EnableFeignClients(clients = {FileApi.class, WebSocketSenderApi.class,
OrderPlanApi.class, OrderCustomPlateNoApi.class, OrderComponentApi.class})
public class RpcConfiguration {
}
@@ -1,60 +0,0 @@
package com.cf.imes.module.system.service.process;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupPageReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupRespVO;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupSaveReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessListSaveReqVO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessGroupDO;
import com.cf.imes.framework.common.pojo.PageResult;
import jakarta.validation.Valid;
import java.util.List;
/**
* 工序组表 process_group Service 接口
*
* @author 晨丰科技
*/
public interface ProcessGroupService {
/**
* 创建工序组表 process_group
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createProcessGroup(@Valid ProcessGroupSaveReqVO createReqVO);
/**
* 更新工序组表 process_group
*
* @param updateReqVO 更新信息
*/
void updateProcessGroup(@Valid ProcessGroupSaveReqVO updateReqVO);
/**
* 删除工序组表 process_group
*
* @param id 编号
*/
void deleteProcessGroup(Long id);
/**
* 获得工序组表 process_group
*
* @param id 编号
* @return 工序组表 process_group
*/
ProcessListSaveReqVO getProcessGroup(Long id);
/**
* 获得工序组表 process_group分页
*
* @param pageReqVO 分页查询
* @return 工序组表 process_group分页
*/
PageResult<ProcessGroupDO> getProcessGroupPage(ProcessGroupPageReqVO pageReqVO);
List<ProcessGroupRespVO> getProcessGroupList(String name);
}
@@ -1,267 +0,0 @@
package com.cf.imes.module.system.service.process;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.executor.api.orderProcess.OrderProcessApi;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupPageReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupRespVO;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupSaveReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessListSaveReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessRespVO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.module.system.dal.mysql.process.ProcessMapper;
import com.cf.imes.module.system.enums.process.ProcessTypeEnum;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import com.cf.imes.module.system.dal.dataobject.process.ProcessGroupDO;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.system.dal.mysql.process.ProcessGroupMapper;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
/**
* 工序组表 process_group Service 实现类
*
* @author 晨丰科技
*/
@Service
@Validated
public class ProcessGroupServiceImpl implements ProcessGroupService {
@Resource
private ProcessGroupMapper processGroupMapper;
@Resource
private ProcessMapper processMapper;
@Resource
private OrderProcessApi orderProcessApi;
@Override
public Long createProcessGroup(ProcessGroupSaveReqVO createReqVO) {
// 校验名称存在
validateProcessGroupNameUnique(createReqVO.getName());
// 插入
ProcessGroupDO processGroup = BeanUtils.toBean(createReqVO, ProcessGroupDO.class);
processGroup.setItems(checkProcessGroupExists(createReqVO.getItems()));
// 判断重复
int isCutting = 0;
int isPacking = 0;
if (createReqVO.getItems() == null) {
throw new ServiceException(PROCESS_ITEM_NOT_EXISTS);
}
List<String> list = cuttingItems(createReqVO.getItems());
if (!list.isEmpty()) {
for (String item : list) {
ProcessDO process = processMapper.selectOneById(Long.valueOf(item), OrganContextHolder.getOrganId());
if (process.getType() == ProcessTypeEnum.TYPE_ONE.getStatus()){
isCutting++;
}
if (process.getType() == ProcessTypeEnum.TYPE_FIVE.getStatus()){
isPacking++;
}
}
}
if (isCutting > 1){
throw new ServiceException(PROCESS_GROUP_CUTTING_ERROR);
}
if (isPacking > 1){
throw new ServiceException(PROCESS_GROUP_PACKING_ERROR);
}
processGroupMapper.insert(processGroup);
if (createReqVO.getIsDefault()) {
processGroupMapper.updateIsDefault(processGroup.getId(), OrganContextHolder.getOrganId());
}
// 返回
return processGroup.getId();
}
private void validateProcessGroupNameUnique(String name) {
if (name != null) {
if (!name.isEmpty()) {
if (processGroupMapper.selectCount(new LambdaQueryWrapper<ProcessGroupDO>()
.eq(ProcessGroupDO::getName, name)
.eq(ProcessGroupDO::getDeleted, false)
.eq(ProcessGroupDO::getOrganId, OrganContextHolder.getOrganId())) > 0) {
throw new ServiceException(PROCESS_GROUP_NAME_EXISTS);
}
}
}
}
private void validateProcessGroupNameUnique(String name,Long id) {
if (name != null) {
if (!name.isEmpty()) {
if (processGroupMapper.selectCount(new LambdaQueryWrapper<ProcessGroupDO>()
.ne(ProcessGroupDO::getId, id)
.eq(ProcessGroupDO::getName, name)
.eq(ProcessGroupDO::getDeleted, false)
.eq(ProcessGroupDO::getOrganId, OrganContextHolder.getOrganId())) > 0) {
throw new ServiceException(PROCESS_GROUP_NAME_EXISTS);
}
}
}
}
@Override
public void updateProcessGroup(ProcessGroupSaveReqVO updateReqVO) {
// 校验存在
validateProcessGroupExists(updateReqVO.getId());
// 名称存在
validateProcessGroupNameUnique(updateReqVO.getName(),updateReqVO.getId());
// 更新
ProcessGroupDO updateObj = BeanUtils.toBean(updateReqVO, ProcessGroupDO.class);
updateObj.setItems(checkProcessGroupExists(updateReqVO.getItems()));
processGroupMapper.updateById(updateObj);
if (updateReqVO.getIsDefault()) {
processGroupMapper.updateIsDefault(updateReqVO.getId(), OrganContextHolder.getOrganId());
}
}
@Override
public void deleteProcessGroup(Long id) {
// 校验存在
validateProcessGroupExists(id);
// 判断是否在生产中使用这个加工组,如果使用则不能删除
checkProcessGroupUsed(id);
// 删除
processGroupMapper.deleteById(id);
}
// 判断是否在生产中使用这个加工组
private void checkProcessGroupUsed(Long id) {
if (orderProcessApi.getOrderProcessByProcessGroupId(id).getData()){
throw new ServiceException(PROCESS_GROUP_USED);
}
}
private void validateProcessGroupExists(Long id) {
if (processGroupMapper.selectById(id) == null) {
throw new ServiceException(PROCESS_GROUP_NOT_EXISTS);
}
}
@Override
public ProcessListSaveReqVO getProcessGroup(Long id) {
// 校验存在
validateProcessGroupExists(id);
ProcessGroupDO processGroup = processGroupMapper.selectById(id);
ProcessListSaveReqVO processListSaveReqVO = BeanUtils.toBean(processGroup, ProcessListSaveReqVO.class);
if (processGroup.getItems() == null) {
return processListSaveReqVO;
}
String[] items = processGroup.getItems().split("(?<!^),,(?!$)|,\\s*");
// 移除由于连续逗号产生的前后空字符串
List<String> itemsList = Arrays.stream(items)
.filter(item -> !item.isEmpty())
.collect(Collectors.toList());
System.err.println(itemsList.size());
List<ProcessRespVO> lists = new ArrayList<>();
// 判断items是否为空
if (itemsList.size() == 0) {
return processListSaveReqVO;
}
for (int i = 0; i < itemsList.size(); i++) {
if (processMapper.selectById(Long.valueOf(itemsList.get(i))) != null)
lists.add(BeanUtils.toBean(processMapper.selectById(itemsList.get(i)), ProcessRespVO.class));
}
processListSaveReqVO.setLists(lists);
return processListSaveReqVO;
}
@Override
public PageResult<ProcessGroupDO> getProcessGroupPage(ProcessGroupPageReqVO pageReqVO) {
return processGroupMapper.selectPage(pageReqVO.setOrganId(OrganContextHolder.getOrganId()));
}
@Override
public List<ProcessGroupRespVO> getProcessGroupList(String name) {
List<ProcessGroupDO> processGroupDOList = processGroupMapper.selectList(new LambdaQueryWrapperX<ProcessGroupDO>()
.likeIfPresent(ProcessGroupDO::getName, name)
.eq(ProcessGroupDO::getOrganId, OrganContextHolder.getOrganId())
.select(ProcessGroupDO::getId, ProcessGroupDO::getName,
ProcessGroupDO::getIsDefault, ProcessGroupDO::getSort, ProcessGroupDO::getDescription,
ProcessGroupDO::getItems, ProcessGroupDO::getCreateTime, ProcessGroupDO::getUpdateTime));
return BeanUtils.toBean(processGroupDOList, ProcessGroupRespVO.class);
}
private String checkProcessGroupExists(String userLists) {
// 检查输入是否为空或仅包含空白字符
if (userLists == null || userLists.trim().isEmpty()) {
return ""; // 统一返回空列表格式化字符串
}
List<String> itemsList = Arrays.stream(userLists.split(","))
.map(String::trim) // 去除每个项两端的空白字符
.filter(item -> item != null && !item.isEmpty()) // 过滤空字符串和null
.collect(Collectors.toList());
// 如果列表为空,直接返回空字符串,表示没有有效的进程ID
if (itemsList.isEmpty()) {
return "";
}
StringBuilder itemsBuilder = new StringBuilder();
StringBuilder missingItemsBuilder = new StringBuilder(); // 使用StringBuilder累积不存在的项的ID
itemsList.forEach(itemId -> {
try {
Object item = processMapper.selectById(Long.valueOf(itemId));
if (item != null) {
// 优化字符串拼接
itemsBuilder.append(itemId).append(",");
} else {
// 将不存在的项的ID累积到missingItemsBuilder中
if (missingItemsBuilder.length() > 0) {
missingItemsBuilder.append(",");
}
missingItemsBuilder.append(itemId);
}
} catch (Exception e) {
throw new ServiceException(PROCESS_ID_IS_NULL);
}
});
// 判断是否存在不存在的项,并一次性抛出异常
if (missingItemsBuilder.length() > 0) {
throw new ServiceException(PROCESS_NOT_EXISTS, "Items with IDs " + missingItemsBuilder.toString() + " do not exist.");
}
// 移除itemsBuilder最后的逗号
if (itemsBuilder.length() > 0) {
itemsBuilder.setLength(itemsBuilder.length() - 1);
}
// 返回格式化的列表字符串
return itemsBuilder.length() > 0 ? itemsBuilder.toString() : "";
}
// 批量更新工序组默认
public void updateProcessGroupIsDefault(Long processGroupId, Long organId) {
processGroupMapper.updateIsDefault(processGroupId, organId);
}
public List<String> cuttingItems(String userLists) {
return Arrays.stream(userLists.split(","))
.map(String::trim) // 去除每个项两端的空白字符
.filter(item -> item != null && !item.isEmpty()) // 过滤空字符串和null
.collect(Collectors.toList());
}
}
@@ -1,75 +0,0 @@
package com.cf.imes.module.system.service.process;
import com.cf.imes.module.system.controller.admin.process.vo.process.*;
import com.cf.imes.module.system.controller.admin.process.vo.processUser.UserProcessRespVO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.framework.common.pojo.PageResult;
import jakarta.validation.Valid;
import java.util.List;
/**
* 工序信息表 process Service 接口
*
* @author 晨丰科技
*/
public interface ProcessService {
/**
* 创建工序信息表 process
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createProcess(@Valid ProcessUserSaveReqVO createReqVO);
/**
* 更新工序信息表 process
*
* @param updateReqVO 更新信息
*/
void updateProcess(@Valid ProcessUserSaveReqVO updateReqVO);
/**
* 删除工序信息表 process
*
* @param id 编号
*/
void deleteProcess(Long id);
/**
* 获得工序信息表 process
*
* @param id 编号
* @return 工序信息表 process
*/
ProcessUserRespVO getProcess(Long id);
/**
* 获得工序信息表 process分页
*
* @param pageReqVO 分页查询
* @return 工序信息表 process分页
*/
PageResult<ProcessDO> getProcessPage(ProcessPageReqVO pageReqVO);
/**
* 获得工序信息表 process分页
*
* @param pageReqVO 分页查询
* @return 工序信息表 process分页
*/
PageResult<ProcessRespVO> getProcessPageAll(ProcessPageReqVO pageReqVO);
/**
* 获得所有工序信息表 process
*
* @return 工序信息表 process
*/
List<ProcessDO> getAllProcess();
List<ProcessDO> getUserProcess(Long userId);
UserProcessRespVO getUserProcessName();
}
@@ -1,265 +0,0 @@
package com.cf.imes.module.system.service.process;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.cf.imes.framework.common.enums.ProcessProcessingTypeEnum;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.system.controller.admin.process.vo.process.*;
import com.cf.imes.module.system.controller.admin.process.vo.processUser.ProcessAndUserRespVO;
import com.cf.imes.module.system.controller.admin.process.vo.processUser.ProcessAndUserSaveReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.processUser.UserProcessRespVO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessUserDO;
import com.cf.imes.module.system.dal.mysql.process.ProcessGroupMapper;
import com.cf.imes.module.system.dal.mysql.user.AdminUserMapper;
import com.cf.imes.module.system.service.user.AdminUserService;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.system.dal.mysql.process.ProcessMapper;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
/**
* 工序信息表 process Service 实现类
*
* @author 晨丰科技
*/
@Service
@Validated
public class ProcessServiceImpl implements ProcessService {
@Resource
private ProcessMapper processMapper;
@Resource
private ProcessGroupMapper processGroupMapper;
@Resource
private ProcessUserService processUserService;
@Resource
private AdminUserService adminUserService;
@Resource
private AdminUserMapper userMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createProcess(ProcessUserSaveReqVO createReqVO) {
// 插入
ProcessDO process = BeanUtils.toBean(createReqVO, ProcessDO.class);
// 名称相同判断
validateNameNoExists(process.getName());
processMapper.insert(process);
if (createReqVO.getUsers() != "" && createReqVO.getUsers() != null) {
Long processID = process.getId();
String[] usersId = createReqVO.getUsers().split(",");
for (String user : usersId) {
ProcessAndUserSaveReqVO processAndUserSaveReqVO = new ProcessAndUserSaveReqVO();
try{
if (adminUserService.getUser(Long.parseLong(user)) == null){
throw new ServiceException(USER_NOT_EXISTS);
}
processAndUserSaveReqVO.setProcessId(processID);
processAndUserSaveReqVO.setUserId(Long.parseLong(user));
processUserService.createProcessUser(processAndUserSaveReqVO);
}catch (Exception e){
throw new ServiceException(ERR);
}
}
}
// 返回
return process.getId();
}
private void validateNameNoExists(String name) {
if (name != null) {
if (!name.isEmpty()) {
if (processMapper.selectCount(new LambdaQueryWrapper<ProcessDO>()
.eq(ProcessDO::getName, name)
.eq(ProcessDO::getDeleted, false)
.eq(ProcessDO::getOrganId, OrganContextHolder.getOrganId())) > 0) {
throw new ServiceException(PROCESS_NAME_EXISTS);
}
}
}
}
private void validateNameNoExists(String name,Long id) {
if (name != null) {
if (!name.isEmpty()) {
if (processMapper.selectCount(new LambdaQueryWrapper<ProcessDO>()
.ne(ProcessDO::getId, id)
.eq(ProcessDO::getName, name)
.eq(ProcessDO::getDeleted, false)
.eq(ProcessDO::getOrganId, OrganContextHolder.getOrganId())) > 0) {
throw new ServiceException(PROCESS_NAME_EXISTS);
}
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateProcess(ProcessUserSaveReqVO updateReqVO) {
// 校验存在
validateProcessExists(updateReqVO.getId());
if (!updateReqVO.getIsEnabled()) {//调为禁用
if (isProcessUsed(String.valueOf(updateReqVO.getId()))){
throw new ServiceException(PROCESS_IS_ENABLED);
}
}
// 校验名称存在
validateNameNoExists(updateReqVO.getName(),updateReqVO.getId());
ProcessDO updateProcess = BeanUtils.toBean(updateReqVO, ProcessDO.class);
processUserService.deleteProcessUserByProcess(updateReqVO.getId());
// 确保updateReqVO不是null,避免NullPointerException
if (updateReqVO != null && updateReqVO.getUsers() != null && updateReqVO.getUsers() != "") {
String[] usersId = updateReqVO.getUsers().split(",");
for (String user : usersId) {
// 增加了对无法解析的用户ID的异常处理
try {
// 增加了对空字符串和仅包含空白字符的用户ID的验证
if (!user.trim().isEmpty()) {
ProcessAndUserSaveReqVO processAndUserSaveReqVO = new ProcessAndUserSaveReqVO();
processAndUserSaveReqVO.setProcessId(updateProcess.getId());
processAndUserSaveReqVO.setUserId(Long.parseLong(user));
processUserService.createProcessUser(processAndUserSaveReqVO);
}
} catch (NumberFormatException e) {
throw new ServiceException(ERR);
}
}
}
processMapper.updateById(updateProcess);
}
// 判断此工序是否已在工序组中使用
public boolean isProcessUsed(String items) {
// System.out.println("processGroupMapper.selectListByItems(items) " + processGroupMapper.selectListByItems(items));
// System.out.println(processGroupMapper.selectListByItems(items).size());
if (processGroupMapper.selectListByItems(items).size() == 0) // 没有使用
return false;
return true;
}
@Override
public void deleteProcess(Long id) {
// 校验存在
validateProcessExists(id);
if (isProcessUsed(String.valueOf(id))){
throw new ServiceException(PROCESS_IS_ENABLED);
}
// 删除
processMapper.deleteById(id);
}
private void validateProcessExists(Long id) {
if (processMapper.selectById(id) == null) {
throw new ServiceException(PROCESS_NOT_EXISTS);
}
}
@Override
public ProcessUserRespVO getProcess(Long id) {
// 校验存在
validateProcessExists(id);
ProcessDO process = processMapper.selectById(id);
StringBuilder userIdBuilder = new StringBuilder();
List<ProcessUserDO> userIdListsByProcessId = processUserService.getProcessUser(id);
if (userIdListsByProcessId != null) {
for (ProcessUserDO processUser : userIdListsByProcessId) {
if (processUser != null && processUser.getUserId() != null) {
if (adminUserService.getUser(processUser.getUserId()) != null)
userIdBuilder.append(",").append(processUser.getUserId());
}
}
}
String userId = userIdBuilder.length() > 0 ? userIdBuilder.substring(1) : "";
ProcessUserRespVO processUserRespVO = BeanUtils.toBean(process, ProcessUserRespVO.class);
processUserRespVO.setUsers(userId);
return processUserRespVO;
}
@Override
public PageResult<ProcessDO> getProcessPage(ProcessPageReqVO pageReqVO) {//分页加用户
return processMapper.selectPage(pageReqVO.setOrganId(OrganContextHolder.getOrganId()).setIsDealer(false));
}
@Override
public PageResult<ProcessRespVO> getProcessPageAll(ProcessPageReqVO pageReqVO) {
PageDTO<ProcessDO> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
IPage<ProcessDO> processRespVOPageResult = processMapper.selectProcessPage(page,BeanUtils.toBean(pageReqVO, ProcessPageReqVO.class).setOrganId(OrganContextHolder.getOrganId()));
return new PageResult<ProcessRespVO>(BeanUtils.toBean(processRespVOPageResult.getRecords(), ProcessRespVO.class), processRespVOPageResult.getTotal());
}
@Override
public List<ProcessDO> getAllProcess() {
// 获取组织id
Long organId = OrganContextHolder.getOrganId();
List<ProcessDO> processDOList = processMapper.selectAll(organId);
return processDOList;
}
@Override
public List<ProcessDO> getUserProcess(Long userId) {
// 获取组织id
Long organId = OrganContextHolder.getOrganId();
return processMapper.selectProcessList(organId,userId)
.stream()
.filter(f-> (!Objects.equals(f.getType(), ProcessProcessingTypeEnum.CUTTINGMATERIALS.getNumber())))
.toList();
}
@Override
public UserProcessRespVO getUserProcessName() {
// 查询当前组织的工序信息和已经分配了加工人的工序信息
List<ProcessAndUserRespVO> userProcessDTO = processMapper.selectUserProcess(getUserOrganId());
List<String> processName = userProcessDTO.stream().map(m -> m.getProcessName()).distinct().collect(Collectors.toList());
List<Long> userIds = userProcessDTO.stream().map(m -> m.getUserId()).distinct().collect(Collectors.toList());
List<String> userName = userMapper.selectListByIds(userIds, getUserOrganId())
.stream().map(m -> m.getNickname()).collect(Collectors.toList());
return UserProcessRespVO.builder()
.processName(processName)
.processUser(userName)
.build();
}
}
@@ -1,48 +0,0 @@
package com.cf.imes.module.system.service.process;
import jakarta.validation.*;
import com.cf.imes.module.system.controller.admin.process.vo.processUser.ProcessAndUserSaveReqVO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessUserDO;
import java.util.List;
/**
* 工序用户表 process_user Service 接口
*
* @author 晨丰科技
*/
public interface ProcessUserService {
/**
* 创建工序用户表 process_user
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createProcessUser(@Valid ProcessAndUserSaveReqVO createReqVO);
/**
* 更新工序用户表 process_user
*
* @param updateReqVO 更新信息
*/
void updateProcessUser(@Valid ProcessAndUserSaveReqVO updateReqVO);
/**
* 删除工序用户表 process_user
*
* @param processId 编号
*/
void deleteProcessUserByProcess(Long processId);
/**
* 获得工序用户表 process_user
*
* @param processId 工序Id
* @return 工序用户表 process_user
*/
List<ProcessUserDO> getProcessUser(Long processId);
}
@@ -1,75 +0,0 @@
package com.cf.imes.module.system.service.process;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.module.system.controller.admin.process.vo.processUser.ProcessAndUserSaveReqVO;
import org.springframework.stereotype.Service;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import com.cf.imes.module.system.dal.dataobject.process.ProcessUserDO;
import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.system.dal.mysql.process.ProcessUserMapper;
import java.util.List;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.PROCESS_USER_EXISTS;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.PROCESS_USER_NOT_EXISTS;
/**
* 工序用户表 process_user Service 实现类
*
* @author 晨丰科技
*/
@Service
@Validated
public class ProcessUserServiceImpl implements ProcessUserService {
@Resource
private ProcessUserMapper processUserMapper;
@Override
public Long createProcessUser(ProcessAndUserSaveReqVO createReqVO) {
// 判断是否有
if (processUserMapper.selectById(createReqVO.getProcessId(), createReqVO.getUserId()).size() != 0) {
throw new ServiceException(PROCESS_USER_EXISTS);
}
// 插入
ProcessUserDO processUser = BeanUtils.toBean(createReqVO, ProcessUserDO.class);
processUserMapper.insert(processUser);
// 返回
return processUser.getProcessId();
}
@Override
public void updateProcessUser(ProcessAndUserSaveReqVO updateReqVO) {
// 校验存在
if (processUserMapper.selectById(updateReqVO.getProcessId(), updateReqVO.getUserId()).size() != 0) {
throw new ServiceException(PROCESS_USER_EXISTS);
}
// 更新
ProcessUserDO updateObj = BeanUtils.toBean(updateReqVO, ProcessUserDO.class);
processUserMapper.updateById(updateObj);
}
@Override
public void deleteProcessUserByProcess(Long processId) {
// 校验存在
// validateProcessUserExists(processId);
// 删除
processUserMapper.deleteUserByProcessId(processId);
}
private void validateProcessUserExists(Long id) {
if (processUserMapper.selectByProcessId(id).size() == 0) {
throw new ServiceException(PROCESS_USER_NOT_EXISTS);
}
}
@Override
public List<ProcessUserDO> getProcessUser(Long id) {
return processUserMapper.selectByProcessId(id);
}
}
@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cf.imes.module.system.dal.mysql.process.ProcessGroupMapper">
<select id="selectOneById" resultType="com.cf.imes.module.system.dal.dataobject.process.ProcessGroupDO">
select
p.id,
p.organ_id,
p.name,
p.is_default,
p.sort,
p.items,
p.description,
p.creator,
p.create_time,
p.updater,
p.update_time,
p.deleted
from process_group p
where p.id = #{id} and p.organ_id = #{organId} and p.deleted = 0
</select>
<update id="updateIsDefault" >
UPDATE process_group SET is_default = 0 WHERE organ_id = #{organId} AND id != #{processGroupId}
</update>
</mapper>
@@ -1,94 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cf.imes.module.system.dal.mysql.process.ProcessMapper">
<select id="selectProcessPage" resultType="com.cf.imes.module.system.dal.dataobject.process.ProcessDO">
select
p.id,
p.organ_id,
p.name,
p.piece_rate,
p.piece_type,
p.type,
p.is_custom,
p.is_dealer,
p.hour_capacity,
p.sort,
p.unit,
p.is_enabled,
p.prepare_time,
p.description,
p.creator,
p.create_time,
p.updater,
p.update_time,
p.deleted
from process p
<where>
p.deleted = 0 and p.organ_id = #{vo.organId}
<if test="vo.userId != null and vo.userId != '' ">
and p.id in (select process_id from process_user where user_id = #{vo.userId})
</if>
<if test="vo.name != null and vo.name != '' ">
and p.name like concat('%', #{vo.name}, '%')
</if>
<if test="vo.isEnabled != null">
and p.is_enabled = #{vo.isEnabled}
</if>
<if test="vo.type != null">
and p.type = #{vo.type}
</if>
<if test="vo.pieceType != null">
and p.piece_type = #{vo.pieceType}
</if>
</where>
order by sort,id desc
</select>
<select id="selectOneById" resultType="com.cf.imes.module.system.dal.dataobject.process.ProcessDO">
select
p.id,
p.organ_id,
p.name,
p.piece_rate,
p.piece_type,
p.type,
p.is_custom,
p.is_dealer,
p.hour_capacity,
p.sort,
p.unit,
p.is_enabled,
p.prepare_time,
p.description,
p.creator,
p.create_time,
p.updater,
p.update_time,
p.deleted
from process p
where p.id = #{id} and p.organ_id = #{organId} and p.deleted = 0
</select>
<delete id="deleteById" parameterType="java.lang.Long">
DELETE FROM process
WHERE id = #{id};
</delete>
<select id="selectUserProcess"
resultType="com.cf.imes.module.system.controller.admin.process.vo.processUser.ProcessAndUserRespVO">
select distinct p.name as processName,pu.user_id as userId
from process p
join process_user pu on p.id = pu.process_id
where p.organ_id = #{organId} and p.deleted = false
</select>
</mapper>
@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cf.imes.module.system.dal.mysql.process.ProcessUserMapper">
<delete id="deleteUserByProcessId" parameterType="Long">
DELETE FROM process_user
WHERE process_id = #{processId};
</delete>
<select id="selectOneById" resultType="com.cf.imes.module.system.dal.dataobject.process.ProcessUserDO">
select
p.organ_id,
p.process_id,
p.user_id,
from process_user p
where p.organ_id = #{organId} and p.process_id = #{processId} and p.deleted = 0
</select>
</mapper>
@@ -1,150 +0,0 @@
package com.cf.imes.module.system.service.process;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupPageReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.group.ProcessGroupSaveReqVO;
import com.cf.imes.module.system.dal.dataobject.process.ProcessGroupDO;
import com.cf.imes.module.system.dal.mysql.process.ProcessGroupMapper;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import jakarta.annotation.Resource;
import com.cf.imes.framework.test.core.ut.BaseDbUnitTest;
import org.springframework.context.annotation.Import;
import java.util.*;
import java.time.LocalDateTime;
import static cn.hutool.core.util.RandomUtil.*;
import static com.cf.imes.framework.test.core.util.AssertUtils.*;
import static com.cf.imes.framework.test.core.util.RandomUtils.*;
import static com.cf.imes.framework.common.util.date.LocalDateTimeUtils.*;
import static com.cf.imes.framework.common.util.object.ObjectUtils.*;
import static com.cf.imes.framework.common.util.date.DateUtils.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
/**
* {@link ProcessGroupServiceImpl} 的单元测试类
*
* @author 晨丰科技
*/
@Import(ProcessGroupServiceImpl.class)
public class GroupServiceImplTest extends BaseDbUnitTest {
@Resource
private ProcessGroupServiceImpl groupService;
@Resource
private ProcessGroupMapper groupMapper;
@Test
public void testCreateGroup_success() {
// 准备参数
ProcessGroupSaveReqVO createReqVO = randomPojo(ProcessGroupSaveReqVO.class).setId(null);
// 调用
Long groupId = groupService.createProcessGroup(createReqVO);
// 断言
assertNotNull(groupId);
// 校验记录的属性是否正确
ProcessGroupDO group = groupMapper.selectById(groupId);
assertPojoEquals(createReqVO, group, "id");
}
}
/* @Test
public void testUpdateGroup_success() {
// mock 数据
ProcessGroupDO dbGroup = randomPojo(ProcessGroupDO.class);
groupMapper.insert(dbGroup);// @Sql: 先插入出一条存在的数据
// 准备参数
ProcessGroupSaveReqVO updateReqVO = randomPojo(ProcessGroupSaveReqVO.class, o -> {
o.setId(dbGroup.getId()); // 设置更新的 ID
});
// 调用
//groupService.updateProcessGroup(updateReqVO);
// 校验是否更新正确
ProcessGroupDO group = groupMapper.selectById(updateReqVO.getId()); // 获取最新的
assertPojoEquals(updateReqVO, group);
}*/
/* @Test
public void testUpdateGroup_notExists() {
// 准备参数
ProcessGroupSaveReqVO updateReqVO = randomPojo(ProcessGroupSaveReqVO.class);
// 调用, 并断言异常
//assertServiceException(() -> groupService.updateProcessGroup(updateReqVO), PROCESS_GROUP_NOT_EXISTS);
}
@Test
public void testDeleteGroup_success() {
// mock 数据
ProcessGroupDO dbGroup = randomPojo(ProcessGroupDO.class);
groupMapper.insert(dbGroup);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbGroup.getId();
// 调用
groupService.deleteProcessGroup(id);
// 校验数据不存在了
assertNull(groupMapper.selectById(id));
}
@Test
public void testDeleteGroup_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> groupService.deleteProcessGroup(id), PROCESS_GROUP_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetGroupPage() {
// mock 数据
ProcessGroupDO dbGroup = randomPojo(ProcessGroupDO.class, o -> { // 等会查询到
o.setName(null);
o.setIsDefault(null);
o.setSort(null);
o.setItems(null);
o.setDescription(null);
o.setCreateTime(null);
});
groupMapper.insert(dbGroup);
// 测试 name 不匹配
groupMapper.insert(cloneIgnoreId(dbGroup, o -> o.setName(null)));
// 测试 isDefault 不匹配
groupMapper.insert(cloneIgnoreId(dbGroup, o -> o.setIsDefault(null)));
// 测试 sort 不匹配
groupMapper.insert(cloneIgnoreId(dbGroup, o -> o.setSort(null)));
// 测试 items 不匹配
groupMapper.insert(cloneIgnoreId(dbGroup, o -> o.setItems(null)));
// 测试 description 不匹配
groupMapper.insert(cloneIgnoreId(dbGroup, o -> o.setDescription(null)));
// 测试 createTime 不匹配
groupMapper.insert(cloneIgnoreId(dbGroup, o -> o.setCreateTime(null)));
// 准备参数
ProcessGroupPageReqVO reqVO = new ProcessGroupPageReqVO();
reqVO.setName(null);
reqVO.setIsDefault(null);
reqVO.setSort(null);
reqVO.setItems(null);
reqVO.setDescription(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
PageResult<ProcessGroupDO> pageResult = groupService.getProcessGroupPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbGroup, pageResult.getList().get(0));
}*/
@@ -1,174 +0,0 @@
package com.cf.imes.module.system.service.process;
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessPageReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessSaveReqVO;
import com.cf.imes.module.system.controller.admin.process.vo.process.ProcessUserSaveReqVO;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import jakarta.annotation.Resource;
import com.cf.imes.framework.test.core.ut.BaseDbUnitTest;
import com.cf.imes.module.system.dal.dataobject.process.ProcessDO;
import com.cf.imes.module.system.dal.mysql.process.ProcessMapper;
import com.cf.imes.framework.common.pojo.PageResult;
import org.springframework.context.annotation.Import;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.*;
import static com.cf.imes.framework.test.core.util.AssertUtils.*;
import static com.cf.imes.framework.test.core.util.RandomUtils.*;
import static com.cf.imes.framework.common.util.date.LocalDateTimeUtils.*;
import static com.cf.imes.framework.common.util.object.ObjectUtils.*;
import static org.junit.jupiter.api.Assertions.*;
/**
* {@link ProcessServiceImpl} 的单元测试类
*
* @author 晨丰科技
*/
@Import(ProcessServiceImpl.class)
public class ProcessServiceImplTest extends BaseDbUnitTest {
@Resource
private ProcessServiceImpl processService;
@Resource
private ProcessMapper processMapper;
@Test
public void testCreateProcess_success() {
// 准备参数
ProcessUserSaveReqVO createReqVO = randomPojo(ProcessUserSaveReqVO.class).setId(null);
System.out.println(createReqVO);
// 调用
Long processId = processService.createProcess(createReqVO);
// 断言
assertNotNull(processId);
// 校验记录的属性是否正确
ProcessDO process = processMapper.selectById(processId);
assertPojoEquals(createReqVO, process, "id");
}
@Test
public void testUpdateProcess_success() {
// mock 数据
ProcessDO dbProcess = randomPojo(ProcessDO.class);
processMapper.insert(dbProcess);// @Sql: 先插入出一条存在的数据
// 准备参数
ProcessUserSaveReqVO updateReqVO = randomPojo(ProcessUserSaveReqVO.class, o -> {
o.setId(dbProcess.getId()); // 设置更新的 ID
});
// 调用
processService.updateProcess(updateReqVO);
// 校验是否更新正确
ProcessDO process = processMapper.selectById(updateReqVO.getId()); // 获取最新的
assertPojoEquals(updateReqVO, process);
}
@Test
public void testUpdateProcess_notExists() {
// 准备参数
ProcessUserSaveReqVO updateReqVO = randomPojo(ProcessUserSaveReqVO.class);
// 调用, 并断言异常
assertServiceException(() -> processService.updateProcess(updateReqVO), PROCESS_NOT_EXISTS);
}
@Test
public void testDeleteProcess_success() {
// mock 数据
ProcessDO dbProcess = randomPojo(ProcessDO.class);
processMapper.insert(dbProcess);// @Sql: 先插入出一条存在的数据
// 准备参数
Long id = dbProcess.getId();
// 调用
processService.deleteProcess(id);
// 校验数据不存在了
assertNull(processMapper.selectById(id));
}
@Test
public void testDeleteProcess_notExists() {
// 准备参数
Long id = randomLongId();
// 调用, 并断言异常
assertServiceException(() -> processService.deleteProcess(id), PROCESS_NOT_EXISTS);
}
@Test
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
public void testGetProcessPage() {
// mock 数据
ProcessDO dbProcess = randomPojo(ProcessDO.class, o -> { // 等会查询到
o.setName(null);
o.setPieceRate(null);
o.setPieceType(null);
o.setType(null);
o.setIsCustom(null);
o.setIsDealer(null);
o.setSort(null);
o.setHourCapacity(null);
o.setUnit(null);
o.setIsEnabled(null);
o.setPrepareTime(null);
o.setDescription(null);
o.setCreateTime(null);
});
processMapper.insert(dbProcess);
// 测试 name 不匹配
processMapper.insert(cloneIgnoreId(dbProcess, o -> o.setName(null)));
// 测试 pieceRate 不匹配
processMapper.insert(cloneIgnoreId(dbProcess, o -> o.setPieceRate(null)));
// 测试 pieceType 不匹配
processMapper.insert(cloneIgnoreId(dbProcess, o -> o.setPieceType(null)));
// 测试 type 不匹配
processMapper.insert(cloneIgnoreId(dbProcess, o -> o.setType(null)));
// 测试 isCustom 不匹配
processMapper.insert(cloneIgnoreId(dbProcess, o -> o.setIsCustom(null)));
// 测试 isDealer 不匹配
processMapper.insert(cloneIgnoreId(dbProcess, o -> o.setIsDealer(null)));
// 测试 sort 不匹配
processMapper.insert(cloneIgnoreId(dbProcess, o -> o.setSort(null)));
// 测试 hourCapacity 不匹配
processMapper.insert(cloneIgnoreId(dbProcess, o -> o.setHourCapacity(null)));
// 测试 unit 不匹配
processMapper.insert(cloneIgnoreId(dbProcess, o -> o.setUnit(null)));
// 测试 isEnabled 不匹配
processMapper.insert(cloneIgnoreId(dbProcess, o -> o.setIsEnabled(null)));
// 测试 prepareTime 不匹配
processMapper.insert(cloneIgnoreId(dbProcess, o -> o.setPrepareTime(null)));
// 测试 description 不匹配
processMapper.insert(cloneIgnoreId(dbProcess, o -> o.setDescription(null)));
// 测试 createTime 不匹配
processMapper.insert(cloneIgnoreId(dbProcess, o -> o.setCreateTime(null)));
// 准备参数
ProcessPageReqVO reqVO = new ProcessPageReqVO();
reqVO.setName(null);
reqVO.setPieceRate(null);
reqVO.setPieceType(null);
reqVO.setType(null);
reqVO.setIsCustom(null);
reqVO.setIsDealer(null);
reqVO.setSort(null);
reqVO.setHourCapacity(null);
reqVO.setUnit(null);
reqVO.setIsEnabled(null);
// reqVO.setPrepareTime();
reqVO.setDescription(null);
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
// 调用
PageResult<ProcessDO> pageResult = processService.getProcessPage(reqVO);
// 断言
assertEquals(1, pageResult.getTotal());
assertEquals(1, pageResult.getList().size());
assertPojoEquals(dbProcess, pageResult.getList().get(0));
}
}