Browse Source

1、工位管理增加班组绑定,搜索

master_hella_20240701
bjang03 1 year ago
parent
commit
49a946f932
  1. 22
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/workstation/WorkstationController.java
  2. 16
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/convert/workstation/WorkstationConvert.java
  3. 2
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/dataobject/workstation/MesWorkstationDO.java
  4. 44
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/mysql/workstation/MesWorkstationMapper.java
  5. 43
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/mysql/workstation/WorkstationMapper.java
  6. 48
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/enums/ErrorCodeConstants.java
  7. 11
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/workstation/WorkstationService.java
  8. 26
      win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/workstation/WorkstationServiceImpl.java
  9. 2
      win-module-mes/win-module-mes-biz/src/main/resources/mapper/workstation/WorkstationMapper.xml

22
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/controller/workstation/WorkstationController.java

@ -26,32 +26,32 @@ import com.win.framework.operatelog.core.annotations.OperateLog;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.win.module.mes.controller.workstation.vo.*;
import com.win.module.mes.dal.dataobject.workstation.WorkstationDO;
import com.win.module.mes.dal.dataobject.workstation.MesWorkstationDO;
import com.win.module.mes.convert.workstation.WorkstationConvert;
import com.win.module.mes.service.workstation.WorkstationService;
import org.springframework.web.multipart.MultipartFile;
@Tag(name = "管理后台 - 工位")
@RestController
@RestController(value = "mes_workstationController")
@RequestMapping("/mes/workstation")
@Validated
public class WorkstationController {
@Resource
private WorkstationService workstationService;
private WorkstationService mes_workstationService;
@PostMapping("/create")
@Operation(summary = "创建工位")
@PreAuthorize("@ss.hasPermission('mes:workstation:create')")
public CommonResult<Long> createWorkstation(@Valid @RequestBody WorkstationCreateReqVO createReqVO) {
return success(workstationService.createWorkstation(createReqVO));
return success(mes_workstationService.createWorkstation(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新工位")
@PreAuthorize("@ss.hasPermission('mes:workstation:update')")
public CommonResult<Boolean> updateWorkstation(@Valid @RequestBody WorkstationUpdateReqVO updateReqVO) {
int result = workstationService.updateWorkstation(updateReqVO);
int result = mes_workstationService.updateWorkstation(updateReqVO);
return success(result > 0);
}
@ -60,7 +60,7 @@ public class WorkstationController {
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('mes:workstation:delete')")
public CommonResult<Boolean> deleteWorkstation(@RequestParam("id") Long id) {
int result = workstationService.deleteWorkstation(id);
int result = mes_workstationService.deleteWorkstation(id);
return success(result > 0);
}
@ -69,7 +69,7 @@ public class WorkstationController {
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('mes:workstation:query')")
public CommonResult<WorkstationRespVO> getWorkstation(@RequestParam("id") Long id) {
WorkstationDO workstation = workstationService.getWorkstation(id);
MesWorkstationDO workstation = mes_workstationService.getWorkstation(id);
return success(WorkstationConvert.INSTANCE.convert(workstation));
}
@ -78,7 +78,7 @@ public class WorkstationController {
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
@PreAuthorize("@ss.hasPermission('mes:workstation:query')")
public CommonResult<List<WorkstationRespVO>> getWorkstationList(@RequestParam("ids") Collection<Long> ids) {
List<WorkstationDO> list = workstationService.getWorkstationList(ids);
List<MesWorkstationDO> list = mes_workstationService.getWorkstationList(ids);
return success(WorkstationConvert.INSTANCE.convertList(list));
}
@ -86,7 +86,7 @@ public class WorkstationController {
@Operation(summary = "获得工位分页")
@PreAuthorize("@ss.hasPermission('mes:workstation:query')")
public CommonResult<PageResult<WorkstationRespVO>> getWorkstationPage(@Valid WorkstationPageReqVO pageVO) {
PageResult<WorkstationDO> pageResult = workstationService.getWorkstationPage(pageVO);
PageResult<MesWorkstationDO> pageResult = mes_workstationService.getWorkstationPage(pageVO);
return success(WorkstationConvert.INSTANCE.convertPage(pageResult));
}
@ -96,7 +96,7 @@ public class WorkstationController {
@OperateLog(type = EXPORT)
public void exportWorkstationExcel(@Valid WorkstationExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<WorkstationDO> list = workstationService.getWorkstationList(exportReqVO);
List<MesWorkstationDO> list = mes_workstationService.getWorkstationList(exportReqVO);
// 导出 Excel
List<WorkstationExcelVO> datas = WorkstationConvert.INSTANCE.convertList02(list);
ExcelUtils.write(response, "工位.xls", "数据", WorkstationExcelVO.class, datas);
@ -124,7 +124,7 @@ public class WorkstationController {
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<WorkstationExcelVO> list = ExcelUtils.read(file, WorkstationExcelVO.class);
List<WorkstationExcelVO> errorList = workstationService.importWorkstationList(list, mode, updatePart);
List<WorkstationExcelVO> errorList = mes_workstationService.importWorkstationList(list, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());

16
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/convert/workstation/WorkstationConvert.java

@ -4,10 +4,10 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.mes.dal.dataobject.workstation.MesWorkstationDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.mes.controller.workstation.vo.*;
import com.win.module.mes.dal.dataobject.workstation.WorkstationDO;
/**
* 工位 Convert
@ -19,17 +19,17 @@ public interface WorkstationConvert {
WorkstationConvert INSTANCE = Mappers.getMapper(WorkstationConvert.class);
WorkstationDO convert(WorkstationCreateReqVO bean);
MesWorkstationDO convert(WorkstationCreateReqVO bean);
WorkstationDO convert(WorkstationUpdateReqVO bean);
MesWorkstationDO convert(WorkstationUpdateReqVO bean);
WorkstationRespVO convert(WorkstationDO bean);
WorkstationRespVO convert(MesWorkstationDO bean);
List<WorkstationRespVO> convertList(List<WorkstationDO> list);
List<WorkstationRespVO> convertList(List<MesWorkstationDO> list);
PageResult<WorkstationRespVO> convertPage(PageResult<WorkstationDO> page);
PageResult<WorkstationRespVO> convertPage(PageResult<MesWorkstationDO> page);
List<WorkstationExcelVO> convertList02(List<WorkstationDO> list);
WorkstationDO convert(WorkstationExcelVO bean);
List<WorkstationExcelVO> convertList02(List<MesWorkstationDO> list);
MesWorkstationDO convert(WorkstationExcelVO bean);
}

2
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/dataobject/workstation/WorkstationDO.java → win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/dataobject/workstation/MesWorkstationDO.java

@ -22,7 +22,7 @@ import com.win.framework.mybatis.core.dataobject.BaseDO;
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WorkstationDO extends BaseDO {
public class MesWorkstationDO extends BaseDO {
/**
* id

44
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/mysql/workstation/MesWorkstationMapper.java

@ -0,0 +1,44 @@
package com.win.module.mes.dal.mysql.workstation;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.module.mes.dal.dataobject.workstation.MesWorkstationDO;
import com.win.module.mes.dal.dataobject.workstation.MesWorkstationDO;
import org.apache.ibatis.annotations.Mapper;
import com.win.module.mes.controller.workstation.vo.*;
/**
* 工位 Mapper
*
* @author 张斌
*/
@Mapper
public interface MesWorkstationMapper extends BaseMapperX<MesWorkstationDO> {
default PageResult<MesWorkstationDO> selectPage(WorkstationPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MesWorkstationDO>()
.eqIfPresent(MesWorkstationDO::getCode, reqVO.getCode())
.likeIfPresent(MesWorkstationDO::getName, reqVO.getName())
.eqIfPresent(MesWorkstationDO::getWorkshopCode, reqVO.getWorkshopCode())
.eqIfPresent(MesWorkstationDO::getProductionLineCode, reqVO.getProductionLineCode())
.orderByDesc(MesWorkstationDO::getId));
}
default List<MesWorkstationDO> selectList(WorkstationExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<MesWorkstationDO>()
.eqIfPresent(MesWorkstationDO::getCode, reqVO.getCode())
.likeIfPresent(MesWorkstationDO::getName, reqVO.getName())
.eqIfPresent(MesWorkstationDO::getWorkshopCode, reqVO.getWorkshopCode())
.eqIfPresent(MesWorkstationDO::getProductionLineCode, reqVO.getProductionLineCode())
.orderByDesc(MesWorkstationDO::getId));
}
default MesWorkstationDO selectByCode(String code){
return selectOne(new LambdaQueryWrapperX<MesWorkstationDO>().eqIfPresent(MesWorkstationDO::getCode,code));
}
default MesWorkstationDO selectById(Long id){
return selectOne(new LambdaQueryWrapperX<MesWorkstationDO>().eqIfPresent(MesWorkstationDO::getId,id));
}
}

43
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/dal/mysql/workstation/WorkstationMapper.java

@ -1,43 +0,0 @@
package com.win.module.mes.dal.mysql.workstation;
import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.module.mes.dal.dataobject.workstation.WorkstationDO;
import org.apache.ibatis.annotations.Mapper;
import com.win.module.mes.controller.workstation.vo.*;
/**
* 工位 Mapper
*
* @author 张斌
*/
@Mapper
public interface WorkstationMapper extends BaseMapperX<WorkstationDO> {
default PageResult<WorkstationDO> selectPage(WorkstationPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<WorkstationDO>()
.eqIfPresent(WorkstationDO::getCode, reqVO.getCode())
.likeIfPresent(WorkstationDO::getName, reqVO.getName())
.eqIfPresent(WorkstationDO::getWorkshopCode, reqVO.getWorkshopCode())
.eqIfPresent(WorkstationDO::getProductionLineCode, reqVO.getProductionLineCode())
.orderByDesc(WorkstationDO::getId));
}
default List<WorkstationDO> selectList(WorkstationExportReqVO reqVO) {
return selectList(new LambdaQueryWrapperX<WorkstationDO>()
.eqIfPresent(WorkstationDO::getCode, reqVO.getCode())
.likeIfPresent(WorkstationDO::getName, reqVO.getName())
.eqIfPresent(WorkstationDO::getWorkshopCode, reqVO.getWorkshopCode())
.eqIfPresent(WorkstationDO::getProductionLineCode, reqVO.getProductionLineCode())
.orderByDesc(WorkstationDO::getId));
}
default WorkstationDO selectByCode(String code){
return selectOne(new LambdaQueryWrapperX<WorkstationDO>().eqIfPresent(WorkstationDO::getCode,code));
}
default WorkstationDO selectById(Long id){
return selectOne(new LambdaQueryWrapperX<WorkstationDO>().eqIfPresent(WorkstationDO::getId,id));
}
}

48
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/enums/ErrorCodeConstants.java

@ -8,50 +8,6 @@ import com.win.framework.common.exception.ErrorCode;
* infra 系统使用 1-001-000-000
*/
public interface ErrorCodeConstants {
// ========== 参数配置 1-001-000-000 ==========
ErrorCode CONFIG_NOT_EXISTS = new ErrorCode(1_001_000_001, "参数配置不存在");
ErrorCode CONFIG_KEY_DUPLICATE = new ErrorCode(1_001_000_002, "参数配置 key 重复");
ErrorCode CONFIG_CAN_NOT_DELETE_SYSTEM_TYPE = new ErrorCode(1_001_000_003, "不能删除类型为系统内置的参数配置");
ErrorCode CONFIG_GET_VALUE_ERROR_IF_VISIBLE = new ErrorCode(1_001_000_004, "获取参数配置失败,原因:不允许获取不可见配置");
// ========== 定时任务 1-001-001-000 ==========
ErrorCode JOB_NOT_EXISTS = new ErrorCode(1_001_001_000, "定时任务不存在");
ErrorCode JOB_HANDLER_EXISTS = new ErrorCode(1_001_001_001, "定时任务的处理器已经存在");
ErrorCode JOB_CHANGE_STATUS_INVALID = new ErrorCode(1_001_001_002, "只允许修改为开启或者关闭状态");
ErrorCode JOB_CHANGE_STATUS_EQUALS = new ErrorCode(1_001_001_003, "定时任务已经处于该状态,无需修改");
ErrorCode JOB_UPDATE_ONLY_NORMAL_STATUS = new ErrorCode(1_001_001_004, "只有开启状态的任务,才可以修改");
ErrorCode JOB_CRON_EXPRESSION_VALID = new ErrorCode(1_001_001_005, "CRON 表达式不正确");
// ========== API 错误日志 1-001-002-000 ==========
ErrorCode API_ERROR_LOG_NOT_FOUND = new ErrorCode(1_001_002_000, "API 错误日志不存在");
ErrorCode API_ERROR_LOG_PROCESSED = new ErrorCode(1_001_002_001, "API 错误日志已处理");
// ========= 文件相关 1-001-003-000 =================
ErrorCode FILE_PATH_EXISTS = new ErrorCode(1_001_003_000, "文件路径已存在");
ErrorCode FILE_NOT_EXISTS = new ErrorCode(1_001_003_001, "文件不存在");
ErrorCode FILE_IS_EMPTY = new ErrorCode(1_001_003_002, "文件为空");
// ========== 代码生成器 1-001-004-000 ==========
ErrorCode CODEGEN_TABLE_EXISTS = new ErrorCode(1_003_001_000, "表定义已经存在");
ErrorCode CODEGEN_IMPORT_TABLE_NULL = new ErrorCode(1_003_001_001, "导入的表不存在");
ErrorCode CODEGEN_IMPORT_COLUMNS_NULL = new ErrorCode(1_003_001_002, "导入的字段不存在");
ErrorCode CODEGEN_TABLE_NOT_EXISTS = new ErrorCode(1_003_001_004, "表定义不存在");
ErrorCode CODEGEN_COLUMN_NOT_EXISTS = new ErrorCode(1_003_001_005, "字段义不存在");
ErrorCode CODEGEN_SYNC_COLUMNS_NULL = new ErrorCode(1_003_001_006, "同步的字段不存在");
ErrorCode CODEGEN_SYNC_NONE_CHANGE = new ErrorCode(1_003_001_007, "同步失败,不存在改变");
ErrorCode CODEGEN_TABLE_INFO_TABLE_COMMENT_IS_NULL = new ErrorCode(1_003_001_008, "数据库的表注释未填写");
ErrorCode CODEGEN_TABLE_INFO_COLUMN_COMMENT_IS_NULL = new ErrorCode(1_003_001_009, "数据库的表字段({})注释未填写");
// ========== 字典类型(测试)1-001-005-000 ==========
ErrorCode TEST_DEMO_NOT_EXISTS = new ErrorCode(1_001_005_000, "测试示例不存在");
// ========== 文件配置 1-001-006-000 ==========
ErrorCode FILE_CONFIG_NOT_EXISTS = new ErrorCode(1_001_006_000, "文件配置不存在");
ErrorCode FILE_CONFIG_DELETE_FAIL_MASTER = new ErrorCode(1_001_006_001, "该文件配置不允许删除,原因:它是主配置,删除会导致无法上传文件");
// ========== 数据源配置 1-001-007-000 ==========
ErrorCode DATA_SOURCE_CONFIG_NOT_EXISTS = new ErrorCode(1_001_007_000, "数据源配置不存在");
ErrorCode DATA_SOURCE_CONFIG_NOT_OK = new ErrorCode(1_001_007_001, "数据源配置不正确,无法进行连接");
ErrorCode WORKSTATION_NOT_EXISTS = new ErrorCode(500, "工位不存在");
ErrorCode WORKSTATION_IMPORT_LIST_IS_EMPTY = new ErrorCode(500, "工位不存在");
}

11
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/workstation/WorkstationService.java

@ -3,7 +3,8 @@ package com.win.module.mes.service.workstation;
import java.util.*;
import javax.validation.*;
import com.win.module.mes.controller.workstation.vo.*;
import com.win.module.mes.dal.dataobject.workstation.WorkstationDO;
import com.win.module.mes.dal.dataobject.workstation.MesWorkstationDO;
import com.win.module.mes.dal.dataobject.workstation.MesWorkstationDO;
import com.win.framework.common.pojo.PageResult;
/**
@ -41,7 +42,7 @@ public interface WorkstationService {
* @param id 编号
* @return 工位
*/
WorkstationDO getWorkstation(Long id);
MesWorkstationDO getWorkstation(Long id);
/**
* 获得工位列表
@ -49,7 +50,7 @@ public interface WorkstationService {
* @param ids 编号
* @return 工位列表
*/
List<WorkstationDO> getWorkstationList(Collection<Long> ids);
List<MesWorkstationDO> getWorkstationList(Collection<Long> ids);
/**
* 获得工位分页
@ -57,7 +58,7 @@ public interface WorkstationService {
* @param pageReqVO 分页查询
* @return 工位分页
*/
PageResult<WorkstationDO> getWorkstationPage(WorkstationPageReqVO pageReqVO);
PageResult<MesWorkstationDO> getWorkstationPage(WorkstationPageReqVO pageReqVO);
/**
* 获得工位列表, 用于 Excel 导出
@ -65,7 +66,7 @@ public interface WorkstationService {
* @param exportReqVO 查询条件
* @return 工位列表
*/
List<WorkstationDO> getWorkstationList(WorkstationExportReqVO exportReqVO);
List<MesWorkstationDO> getWorkstationList(WorkstationExportReqVO exportReqVO);
/**
* 导入工位主信息

26
win-module-mes/win-module-mes-biz/src/main/java/com/win/module/mes/service/workstation/WorkstationServiceImpl.java

@ -1,21 +1,19 @@
package com.win.module.mes.service.workstation;
import cn.hutool.core.collection.CollUtil;
import com.win.module.mes.dal.mysql.workstation.MesWorkstationMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import java.util.*;
import com.win.module.mes.controller.workstation.vo.*;
import com.win.module.mes.dal.dataobject.workstation.WorkstationDO;
import com.win.module.mes.dal.dataobject.workstation.MesWorkstationDO;
import com.win.framework.common.pojo.PageResult;
import com.win.module.mes.convert.workstation.WorkstationConvert;
import com.win.module.mes.dal.mysql.workstation.WorkstationMapper;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.infra.enums.ErrorCodeConstants.WORKSTATION_IMPORT_LIST_IS_EMPTY;
import static com.win.module.infra.enums.ErrorCodeConstants.WORKSTATION_NOT_EXISTS;
import static com.win.module.mes.enums.ErrorCodeConstants.*;
/**
@ -23,17 +21,17 @@ import static com.win.module.mes.enums.ErrorCodeConstants.*;
*
* @author 张斌
*/
@Service
@Service(value = "mes_workstationService")
@Validated
public class WorkstationServiceImpl implements WorkstationService {
@Resource
private WorkstationMapper workstationMapper;
private MesWorkstationMapper workstationMapper;
@Override
public Long createWorkstation(WorkstationCreateReqVO createReqVO) {
// 插入
WorkstationDO workstation = WorkstationConvert.INSTANCE.convert(createReqVO);
MesWorkstationDO workstation = WorkstationConvert.INSTANCE.convert(createReqVO);
workstationMapper.insert(workstation);
// 返回
return workstation.getId();
@ -44,7 +42,7 @@ public class WorkstationServiceImpl implements WorkstationService {
// 校验存在
validateWorkstationExists(updateReqVO.getId());
// 更新
WorkstationDO updateObj = WorkstationConvert.INSTANCE.convert(updateReqVO);
MesWorkstationDO updateObj = WorkstationConvert.INSTANCE.convert(updateReqVO);
return workstationMapper.updateById(updateObj);
}
@ -63,22 +61,22 @@ public class WorkstationServiceImpl implements WorkstationService {
}
@Override
public WorkstationDO getWorkstation(Long id) {
public MesWorkstationDO getWorkstation(Long id) {
return workstationMapper.selectById(id);
}
@Override
public List<WorkstationDO> getWorkstationList(Collection<Long> ids) {
public List<MesWorkstationDO> getWorkstationList(Collection<Long> ids) {
return workstationMapper.selectBatchIds(ids);
}
@Override
public PageResult<WorkstationDO> getWorkstationPage(WorkstationPageReqVO pageReqVO) {
public PageResult<MesWorkstationDO> getWorkstationPage(WorkstationPageReqVO pageReqVO) {
return workstationMapper.selectPage(pageReqVO);
}
@Override
public List<WorkstationDO> getWorkstationList(WorkstationExportReqVO exportReqVO) {
public List<MesWorkstationDO> getWorkstationList(WorkstationExportReqVO exportReqVO) {
return workstationMapper.selectList(exportReqVO);
}
@ -92,12 +90,12 @@ public class WorkstationServiceImpl implements WorkstationService {
datas.forEach(item -> {
if(errorList == null){
// 判断如果不存在,在进行插入
WorkstationDO obj = workstationMapper.selectByCode(item.getCode());
MesWorkstationDO obj = workstationMapper.selectByCode(item.getCode());
if (obj == null&& mode != 3) {
workstationMapper.insert(WorkstationConvert.INSTANCE.convert(item));
}
else if (obj != null && mode != 2) {// 如果存在,判断是否允许更新
WorkstationDO workstationDO = WorkstationConvert.INSTANCE.convert(item);
MesWorkstationDO workstationDO = WorkstationConvert.INSTANCE.convert(item);
workstationDO.setId(obj.getId());
workstationMapper.updateById(obj);
}

2
win-module-mes/win-module-mes-biz/src/main/resources/mapper/workstation/WorkstationMapper.xml

@ -1,6 +1,6 @@
<?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.win.module.mes.dal.mysql.workstation.WorkstationMapper">
<mapper namespace="com.win.module.mes.dal.mysql.workstation.MesWorkstationMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。

Loading…
Cancel
Save