修改bug
This commit is contained in:
@ -1,14 +1,11 @@
|
|||||||
package org.dromara.contractor.controller;
|
package org.dromara.contractor.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.dev33.satoken.annotation.SaMode;
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import com.alibaba.excel.EasyExcel;
|
import com.alibaba.excel.EasyExcel;
|
||||||
import com.alibaba.excel.ExcelWriter;
|
import com.alibaba.excel.ExcelWriter;
|
||||||
import com.alibaba.excel.write.metadata.WriteSheet;
|
import com.alibaba.excel.write.metadata.WriteSheet;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.beust.ah.A;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
@ -19,7 +16,6 @@ import org.dromara.common.core.domain.R;
|
|||||||
import org.dromara.common.core.utils.DateUtils;
|
import org.dromara.common.core.utils.DateUtils;
|
||||||
import org.dromara.common.core.validate.AddGroup;
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
import org.dromara.common.core.validate.EditGroup;
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
import org.dromara.common.excel.utils.ExcelUtil;
|
|
||||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
import org.dromara.common.log.annotation.Log;
|
import org.dromara.common.log.annotation.Log;
|
||||||
import org.dromara.common.log.enums.BusinessType;
|
import org.dromara.common.log.enums.BusinessType;
|
||||||
@ -30,10 +26,7 @@ import org.dromara.common.web.core.BaseController;
|
|||||||
import org.dromara.contractor.domain.SubConstructionUser;
|
import org.dromara.contractor.domain.SubConstructionUser;
|
||||||
import org.dromara.contractor.domain.SubConstructionUserFile;
|
import org.dromara.contractor.domain.SubConstructionUserFile;
|
||||||
import org.dromara.contractor.domain.dto.constructionuser.*;
|
import org.dromara.contractor.domain.dto.constructionuser.*;
|
||||||
import org.dromara.contractor.domain.dto.constructionuserfile.SubConstructionUserFileQueryReq;
|
|
||||||
import org.dromara.contractor.domain.exportvo.BusConstructionUserExportVo;
|
|
||||||
import org.dromara.contractor.domain.vo.constructionuser.*;
|
import org.dromara.contractor.domain.vo.constructionuser.*;
|
||||||
import org.dromara.contractor.domain.vo.constructionuserfile.SubConstructionUserFileVo;
|
|
||||||
import org.dromara.contractor.service.ISubConstructionUserFileService;
|
import org.dromara.contractor.service.ISubConstructionUserFileService;
|
||||||
import org.dromara.contractor.service.ISubConstructionUserService;
|
import org.dromara.contractor.service.ISubConstructionUserService;
|
||||||
import org.dromara.project.domain.dto.project.BusProjectQueryReq;
|
import org.dromara.project.domain.dto.project.BusProjectQueryReq;
|
||||||
@ -81,6 +74,7 @@ public class SubConstructionUserController extends BaseController {
|
|||||||
private final IBusProjectService projectService;
|
private final IBusProjectService projectService;
|
||||||
private final IdCardEncryptorUtil idCardEncryptorUtil;
|
private final IdCardEncryptorUtil idCardEncryptorUtil;
|
||||||
private final ISubConstructionUserFileService constructionUserFileService;
|
private final ISubConstructionUserFileService constructionUserFileService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询施工人员列表
|
* 查询施工人员列表
|
||||||
*/
|
*/
|
||||||
@ -90,6 +84,7 @@ public class SubConstructionUserController extends BaseController {
|
|||||||
return constructionUserService.queryPageList(req, pageQuery);
|
return constructionUserService.queryPageList(req, pageQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新人池
|
* 新人池
|
||||||
*/
|
*/
|
||||||
@ -110,7 +105,6 @@ public class SubConstructionUserController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询每个施工人员总的考勤列表
|
* 查询每个施工人员总的考勤列表
|
||||||
*/
|
*/
|
||||||
@ -187,7 +181,7 @@ public class SubConstructionUserController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 修改施工人员工资
|
* 修改施工人员工资
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("contractor:constructionUser:salary")
|
@SaCheckPermission("contractor:constructionUser:edit")
|
||||||
@Log(title = "施工人员", businessType = BusinessType.UPDATE)
|
@Log(title = "施工人员", businessType = BusinessType.UPDATE)
|
||||||
@RepeatSubmit()
|
@RepeatSubmit()
|
||||||
@PutMapping("/salary")
|
@PutMapping("/salary")
|
||||||
@ -198,7 +192,7 @@ public class SubConstructionUserController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 修改施工人员打卡状态
|
* 修改施工人员打卡状态
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("contractor:constructionUser:clock")
|
@SaCheckPermission("contractor:constructionUser:edit")
|
||||||
@Log(title = "施工人员", businessType = BusinessType.UPDATE)
|
@Log(title = "施工人员", businessType = BusinessType.UPDATE)
|
||||||
@RepeatSubmit()
|
@RepeatSubmit()
|
||||||
@PutMapping("/clock")
|
@PutMapping("/clock")
|
||||||
@ -209,7 +203,7 @@ public class SubConstructionUserController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 批量修改施工人员状态
|
* 批量修改施工人员状态
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("contractor:constructionUser:batchStatus")
|
@SaCheckPermission("contractor:constructionUser:edit")
|
||||||
@Log(title = "施工人员", businessType = BusinessType.UPDATE)
|
@Log(title = "施工人员", businessType = BusinessType.UPDATE)
|
||||||
@RepeatSubmit()
|
@RepeatSubmit()
|
||||||
@PutMapping("/batch/status")
|
@PutMapping("/batch/status")
|
||||||
@ -220,7 +214,7 @@ public class SubConstructionUserController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 根据项目id批量修改施工人员打卡状态
|
* 根据项目id批量修改施工人员打卡状态
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("contractor:constructionUser:batchClock")
|
@SaCheckPermission("contractor:constructionUser:edit")
|
||||||
@Log(title = "施工人员", businessType = BusinessType.UPDATE)
|
@Log(title = "施工人员", businessType = BusinessType.UPDATE)
|
||||||
@RepeatSubmit()
|
@RepeatSubmit()
|
||||||
@PutMapping("/batch/clock")
|
@PutMapping("/batch/clock")
|
||||||
@ -231,7 +225,7 @@ public class SubConstructionUserController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 施工人员迁移
|
* 施工人员迁移
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("contractor:constructionUser:changeProject")
|
@SaCheckPermission("contractor:constructionUser:edit")
|
||||||
@Log(title = "施工人员", businessType = BusinessType.UPDATE)
|
@Log(title = "施工人员", businessType = BusinessType.UPDATE)
|
||||||
@RepeatSubmit()
|
@RepeatSubmit()
|
||||||
@PutMapping("/change/project")
|
@PutMapping("/change/project")
|
||||||
@ -311,8 +305,6 @@ public class SubConstructionUserController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Log(title = "施工人员导出", businessType = BusinessType.EXPORT)
|
@Log(title = "施工人员导出", businessType = BusinessType.EXPORT)
|
||||||
@PostMapping("/export")
|
@PostMapping("/export")
|
||||||
public void export(SubConstructionUserQueryReq req, HttpServletResponse response) {
|
public void export(SubConstructionUserQueryReq req, HttpServletResponse response) {
|
||||||
|
|||||||
@ -6,8 +6,10 @@ import jakarta.annotation.Resource;
|
|||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
import org.apache.poi.ss.usermodel.Cell;
|
||||||
import org.apache.poi.ss.usermodel.*;
|
import org.apache.poi.ss.usermodel.CellType;
|
||||||
|
import org.apache.poi.ss.usermodel.DateUtil;
|
||||||
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
@ -39,8 +41,6 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
@ -109,6 +109,17 @@ public class DesVolumeCatalogController extends BaseController {
|
|||||||
return R.ok(volumeFileService.getVoList(volumeFiles));
|
return R.ok(volumeFileService.getVoList(volumeFiles));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取卷册目录设计子项列表
|
||||||
|
*
|
||||||
|
* @param projectId 项目ID
|
||||||
|
*/
|
||||||
|
@GetMapping("/listDesignSubitem/{projectId}")
|
||||||
|
public R<List<String>> listDesignSubitem(@NotNull(message = "项目主键不能为空")
|
||||||
|
@PathVariable Long projectId) {
|
||||||
|
return R.ok(desVolumeCatalogService.listDesignSubitem(projectId));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户查看文件
|
* 用户查看文件
|
||||||
*
|
*
|
||||||
@ -167,7 +178,6 @@ public class DesVolumeCatalogController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入卷册目录
|
* 导入卷册目录
|
||||||
*/
|
*/
|
||||||
@ -259,6 +269,7 @@ public class DesVolumeCatalogController extends BaseController {
|
|||||||
|
|
||||||
return dataList;
|
return dataList;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean hasValidData(Row row) {
|
private static boolean hasValidData(Row row) {
|
||||||
// 遍历行中的所有单元格
|
// 遍历行中的所有单元格
|
||||||
for (int cellIndex = 0; cellIndex < row.getLastCellNum(); cellIndex++) {
|
for (int cellIndex = 0; cellIndex < row.getLastCellNum(); cellIndex++) {
|
||||||
@ -335,10 +346,12 @@ public class DesVolumeCatalogController extends BaseController {
|
|||||||
// 如果 Excel 是 yyyy/MM/dd 或 yyyy.MM.dd,可以额外处理
|
// 如果 Excel 是 yyyy/MM/dd 或 yyyy.MM.dd,可以额外处理
|
||||||
try {
|
try {
|
||||||
return LocalDate.parse(text, java.time.format.DateTimeFormatter.ofPattern("yyyy/MM/dd"));
|
return LocalDate.parse(text, java.time.format.DateTimeFormatter.ofPattern("yyyy/MM/dd"));
|
||||||
} catch (Exception ignored) {}
|
} catch (Exception ignored) {
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
return LocalDate.parse(text, java.time.format.DateTimeFormatter.ofPattern("yyyy.MM.dd"));
|
return LocalDate.parse(text, java.time.format.DateTimeFormatter.ofPattern("yyyy.MM.dd"));
|
||||||
} catch (Exception ignored) {}
|
} catch (Exception ignored) {
|
||||||
|
}
|
||||||
return null; // 不识别的格式就返回 null
|
return null; // 不识别的格式就返回 null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,11 +1,9 @@
|
|||||||
package org.dromara.design.domain.dto.volumecatalog;
|
package org.dromara.design.domain.dto.volumecatalog;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.time.LocalDate;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author lilemy
|
* @author lilemy
|
||||||
@ -43,4 +41,9 @@ public class DesVolumeCatalogQueryReq implements Serializable {
|
|||||||
|
|
||||||
private String isUpload;
|
private String isUpload;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设计子项
|
||||||
|
*/
|
||||||
|
private String designSubitem;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,12 +8,10 @@ import org.dromara.common.mybatis.core.page.PageQuery;
|
|||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.design.domain.DesVolumeCatalog;
|
import org.dromara.design.domain.DesVolumeCatalog;
|
||||||
import org.dromara.design.domain.DesVolumeFile;
|
import org.dromara.design.domain.DesVolumeFile;
|
||||||
import org.dromara.design.domain.bo.DesVolumeFileBo;
|
|
||||||
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogCreateReq;
|
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogCreateReq;
|
||||||
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogQueryReq;
|
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogQueryReq;
|
||||||
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogUpdateReq;
|
import org.dromara.design.domain.dto.volumecatalog.DesVolumeCatalogUpdateReq;
|
||||||
import org.dromara.design.domain.vo.volumecatalog.DesVolumeCatalogVo;
|
import org.dromara.design.domain.vo.volumecatalog.DesVolumeCatalogVo;
|
||||||
import org.dromara.design.domain.vo.volumefile.DesVolumeFileVo;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -124,4 +122,12 @@ public interface IDesVolumeCatalogService extends IService<DesVolumeCatalog> {
|
|||||||
void exportExcelByProjectId(Long projectId, HttpServletResponse response);
|
void exportExcelByProjectId(Long projectId, HttpServletResponse response);
|
||||||
|
|
||||||
void insertBatchByBo(List<DesVolumeCatalogCreateReq> list);
|
void insertBatchByBo(List<DesVolumeCatalogCreateReq> list);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目下所有设计子项
|
||||||
|
*
|
||||||
|
* @param projectId 项目id
|
||||||
|
* @return 设计子项列表
|
||||||
|
*/
|
||||||
|
List<String> listDesignSubitem(Long projectId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.poi.ss.formula.FormulaParseException;
|
|
||||||
import org.apache.poi.ss.usermodel.*;
|
import org.apache.poi.ss.usermodel.*;
|
||||||
import org.apache.poi.ss.util.CellRangeAddressList;
|
import org.apache.poi.ss.util.CellRangeAddressList;
|
||||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
@ -221,6 +220,22 @@ public class DesVolumeCatalogServiceImpl extends ServiceImpl<DesVolumeCatalogMap
|
|||||||
RedisUtils.setCacheObject("DesVolumeCatalog:serialNumber", serialNumber);
|
RedisUtils.setCacheObject("DesVolumeCatalog:serialNumber", serialNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取项目下所有设计子项
|
||||||
|
*
|
||||||
|
* @param projectId 项目id
|
||||||
|
* @return 设计子项列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<String> listDesignSubitem(Long projectId) {
|
||||||
|
List<DesVolumeCatalog> list = this.lambdaQuery()
|
||||||
|
.eq(DesVolumeCatalog::getProjectId, projectId)
|
||||||
|
.groupBy(DesVolumeCatalog::getDesignSubitem)
|
||||||
|
.select(DesVolumeCatalog::getDesignSubitem)
|
||||||
|
.list();
|
||||||
|
return list.stream().map(DesVolumeCatalog::getDesignSubitem).toList();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改卷册目录
|
* 修改卷册目录
|
||||||
*
|
*
|
||||||
@ -336,13 +351,14 @@ public class DesVolumeCatalogServiceImpl extends ServiceImpl<DesVolumeCatalogMap
|
|||||||
String documentName = req.getDocumentName();
|
String documentName = req.getDocumentName();
|
||||||
String auditStatus = req.getAuditStatus();
|
String auditStatus = req.getAuditStatus();
|
||||||
String isUpload = req.getIsUpload();
|
String isUpload = req.getIsUpload();
|
||||||
|
String designSubitem = req.getDesignSubitem();
|
||||||
// lqw.orderByDesc(DesVolumeCatalog::getCreateTime);
|
// lqw.orderByDesc(DesVolumeCatalog::getCreateTime);
|
||||||
lqw.orderByAsc(DesVolumeCatalog::getSerialNumber);
|
lqw.orderByAsc(DesVolumeCatalog::getSerialNumber);
|
||||||
lqw.like(StringUtils.isNotBlank(documentName), DesVolumeCatalog::getDocumentName, documentName);
|
lqw.like(StringUtils.isNotBlank(documentName), DesVolumeCatalog::getDocumentName, documentName);
|
||||||
|
lqw.like(StringUtils.isNotBlank(designSubitem), DesVolumeCatalog::getDesignSubitem, designSubitem);
|
||||||
lqw.eq(StringUtils.isNotBlank(volumeNumber), DesVolumeCatalog::getVolumeNumber, volumeNumber);
|
lqw.eq(StringUtils.isNotBlank(volumeNumber), DesVolumeCatalog::getVolumeNumber, volumeNumber);
|
||||||
lqw.eq(ObjectUtils.isNotEmpty(projectId), DesVolumeCatalog::getProjectId, projectId);
|
lqw.eq(ObjectUtils.isNotEmpty(projectId), DesVolumeCatalog::getProjectId, projectId);
|
||||||
lqw.eq(StringUtils.isNotBlank(auditStatus), DesVolumeCatalog::getAuditStatus, auditStatus);
|
lqw.eq(StringUtils.isNotBlank(auditStatus), DesVolumeCatalog::getAuditStatus, auditStatus);
|
||||||
|
|
||||||
lqw.exists("1".equals(isUpload), "SELECT 1 FROM des_volume_file WHERE volume_catalog_id = des_volume_catalog.design");
|
lqw.exists("1".equals(isUpload), "SELECT 1 FROM des_volume_file WHERE volume_catalog_id = des_volume_catalog.design");
|
||||||
lqw.notExists("0".equals(isUpload), "SELECT 1 FROM des_volume_file WHERE volume_catalog_id = des_volume_catalog.design");
|
lqw.notExists("0".equals(isUpload), "SELECT 1 FROM des_volume_file WHERE volume_catalog_id = des_volume_catalog.design");
|
||||||
|
|
||||||
|
|||||||
@ -42,7 +42,7 @@ public class SysOssController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 查询OSS对象存储列表
|
* 查询OSS对象存储列表
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("system:oss:list")
|
// @SaCheckPermission("system:oss:list")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public TableDataInfo<SysOssVo> list(@Validated(QueryGroup.class) SysOssBo bo, PageQuery pageQuery) {
|
public TableDataInfo<SysOssVo> list(@Validated(QueryGroup.class) SysOssBo bo, PageQuery pageQuery) {
|
||||||
return ossService.queryPageList(bo, pageQuery);
|
return ossService.queryPageList(bo, pageQuery);
|
||||||
@ -127,7 +127,7 @@ public class SysOssController extends BaseController {
|
|||||||
*
|
*
|
||||||
* @param ossIds OSS对象ID串
|
* @param ossIds OSS对象ID串
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("system:oss:remove")
|
// @SaCheckPermission("system:oss:remove")
|
||||||
@Log(title = "OSS对象存储", businessType = BusinessType.DELETE)
|
@Log(title = "OSS对象存储", businessType = BusinessType.DELETE)
|
||||||
@DeleteMapping("/{ossIds}")
|
@DeleteMapping("/{ossIds}")
|
||||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||||
|
|||||||
Reference in New Issue
Block a user