装册管理及条码生成所需工具类
parent
c7574db604
commit
f6bdf3f8d0
@ -0,0 +1,227 @@
|
|||||||
|
package cn.iocoder.yudao.framework.common.util;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.util.string.StringUtils;
|
||||||
|
import org.apache.commons.fileupload.FileItem;
|
||||||
|
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.util.MimeTypeUtils;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import org.springframework.web.multipart.commons.CommonsMultipartFile;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.*;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件处理工具类
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
public class FileUtils
|
||||||
|
{
|
||||||
|
public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 输出指定文件的byte数组
|
||||||
|
*
|
||||||
|
* @param filePath 文件路径
|
||||||
|
* @param os 输出流
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static void writeBytes(String filePath, OutputStream os) throws IOException
|
||||||
|
{
|
||||||
|
FileInputStream fis = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File file = new File(filePath);
|
||||||
|
if (!file.exists())
|
||||||
|
{
|
||||||
|
throw new FileNotFoundException(filePath);
|
||||||
|
}
|
||||||
|
fis = new FileInputStream(file);
|
||||||
|
byte[] b = new byte[1024];
|
||||||
|
int length;
|
||||||
|
while ((length = fis.read(b)) > 0)
|
||||||
|
{
|
||||||
|
os.write(b, 0, length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
IOUtils.close(os);
|
||||||
|
IOUtils.close(fis);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除文件
|
||||||
|
*
|
||||||
|
* @param filePath 文件
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean deleteFile(String filePath)
|
||||||
|
{
|
||||||
|
boolean flag = false;
|
||||||
|
File file = new File(filePath);
|
||||||
|
// 路径为文件且不为空则进行删除
|
||||||
|
if (file.isFile() && file.exists())
|
||||||
|
{
|
||||||
|
file.delete();
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件名称验证
|
||||||
|
*
|
||||||
|
* @param filename 文件名称
|
||||||
|
* @return true 正常 false 非法
|
||||||
|
*/
|
||||||
|
public static boolean isValidFilename(String filename)
|
||||||
|
{
|
||||||
|
return filename.matches(FILENAME_PATTERN);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下载文件名重新编码
|
||||||
|
*
|
||||||
|
* @param request 请求对象
|
||||||
|
* @param fileName 文件名
|
||||||
|
* @return 编码后的文件名
|
||||||
|
*/
|
||||||
|
public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException
|
||||||
|
{
|
||||||
|
final String agent = request.getHeader("USER-AGENT");
|
||||||
|
String filename = fileName;
|
||||||
|
if (agent.contains("MSIE"))
|
||||||
|
{
|
||||||
|
// IE浏览器
|
||||||
|
filename = URLEncoder.encode(filename, "utf-8");
|
||||||
|
filename = filename.replace("+", " ");
|
||||||
|
}
|
||||||
|
else if (agent.contains("Firefox"))
|
||||||
|
{
|
||||||
|
// 火狐浏览器
|
||||||
|
filename = new String(fileName.getBytes(), "ISO8859-1");
|
||||||
|
}
|
||||||
|
else if (agent.contains("Chrome"))
|
||||||
|
{
|
||||||
|
// google浏览器
|
||||||
|
filename = URLEncoder.encode(filename, "utf-8");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 其它浏览器
|
||||||
|
filename = URLEncoder.encode(filename, "utf-8");
|
||||||
|
}
|
||||||
|
return filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下载文件名重新编码
|
||||||
|
*
|
||||||
|
* @param response 响应对象
|
||||||
|
* @param realFileName 真实文件名
|
||||||
|
*/
|
||||||
|
public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException
|
||||||
|
{
|
||||||
|
String percentEncodedFileName = percentEncode(realFileName);
|
||||||
|
|
||||||
|
StringBuilder contentDispositionValue = new StringBuilder();
|
||||||
|
contentDispositionValue.append("attachment; filename=")
|
||||||
|
.append(percentEncodedFileName)
|
||||||
|
.append(";")
|
||||||
|
.append("filename*=")
|
||||||
|
.append("utf-8''")
|
||||||
|
.append(percentEncodedFileName);
|
||||||
|
|
||||||
|
response.addHeader("Access-Control-Expose-Headers", "Content-Disposition,download-filename");
|
||||||
|
response.setHeader("Content-disposition", contentDispositionValue.toString());
|
||||||
|
response.setHeader("download-filename", percentEncodedFileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 百分号编码工具方法
|
||||||
|
*
|
||||||
|
* @param s 需要百分号编码的字符串
|
||||||
|
* @return 百分号编码后的字符串
|
||||||
|
*/
|
||||||
|
public static String percentEncode(String s) throws UnsupportedEncodingException
|
||||||
|
{
|
||||||
|
String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString());
|
||||||
|
return encode.replaceAll("\\+", "%20");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取图像后缀
|
||||||
|
*
|
||||||
|
* @param photoByte 图像数据
|
||||||
|
* @return 后缀名
|
||||||
|
*/
|
||||||
|
public static String getFileExtendName(byte[] photoByte)
|
||||||
|
{
|
||||||
|
String strFileExtendName = "jpg";
|
||||||
|
if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56)
|
||||||
|
&& ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97))
|
||||||
|
{
|
||||||
|
strFileExtendName = "gif";
|
||||||
|
}
|
||||||
|
else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70))
|
||||||
|
{
|
||||||
|
strFileExtendName = "jpg";
|
||||||
|
}
|
||||||
|
else if ((photoByte[0] == 66) && (photoByte[1] == 77))
|
||||||
|
{
|
||||||
|
strFileExtendName = "bmp";
|
||||||
|
}
|
||||||
|
else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71))
|
||||||
|
{
|
||||||
|
strFileExtendName = "png";
|
||||||
|
}
|
||||||
|
return strFileExtendName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取名称
|
||||||
|
*
|
||||||
|
* @param fileName 路径名称
|
||||||
|
* @return 没有文件路径的名称
|
||||||
|
*/
|
||||||
|
public static String getName(String fileName)
|
||||||
|
{
|
||||||
|
if (fileName == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
int lastUnixPos = fileName.lastIndexOf('/');
|
||||||
|
int lastWindowsPos = fileName.lastIndexOf('\\');
|
||||||
|
int index = Math.max(lastUnixPos, lastWindowsPos);
|
||||||
|
return fileName.substring(index + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MultipartFile getMultipartFile(File file) {
|
||||||
|
FileItem item = new DiskFileItemFactory().createItem("file"
|
||||||
|
, MediaType.MULTIPART_FORM_DATA_VALUE
|
||||||
|
, true
|
||||||
|
, file.getName());
|
||||||
|
try (InputStream input = new FileInputStream(file);
|
||||||
|
OutputStream os = item.getOutputStream()) {
|
||||||
|
// 流转移
|
||||||
|
IOUtils.copy(input, os);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new IllegalArgumentException("Invalid file: " + e, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new CommonsMultipartFile(item);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,102 @@
|
|||||||
|
package cn.iocoder.yudao.module.archives.controller.admin.packages;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import javax.servlet.http.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||||
|
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.archives.controller.admin.packages.vo.*;
|
||||||
|
import cn.iocoder.yudao.module.archives.dal.dataobject.packages.PackagesDO;
|
||||||
|
import cn.iocoder.yudao.module.archives.convert.packages.PackagesConvert;
|
||||||
|
import cn.iocoder.yudao.module.archives.service.packages.PackagesService;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 装册")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/archives/packages")
|
||||||
|
@Validated
|
||||||
|
public class PackagesController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PackagesService packagesService;
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建装册")
|
||||||
|
@PreAuthorize("@ss.hasPermission('archives:packages:create')")
|
||||||
|
public CommonResult<Long> createPackages(@Valid @RequestBody PackagesCreateReqVO createReqVO) {
|
||||||
|
return success(packagesService.createPackages(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
@Operation(summary = "更新装册")
|
||||||
|
@PreAuthorize("@ss.hasPermission('archives:packages:update')")
|
||||||
|
public CommonResult<Boolean> updatePackages(@Valid @RequestBody PackagesUpdateReqVO updateReqVO) {
|
||||||
|
packagesService.updatePackages(updateReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete")
|
||||||
|
@Operation(summary = "删除装册")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
|
@PreAuthorize("@ss.hasPermission('archives:packages:delete')")
|
||||||
|
public CommonResult<Boolean> deletePackages(@RequestParam("id") Long id) {
|
||||||
|
packagesService.deletePackages(id);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得装册")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
@PreAuthorize("@ss.hasPermission('archives:packages:query')")
|
||||||
|
public CommonResult<PackagesRespVO> getPackages(@RequestParam("id") Long id) {
|
||||||
|
PackagesDO packages = packagesService.getPackages(id);
|
||||||
|
return success(PackagesConvert.INSTANCE.convert(packages));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list")
|
||||||
|
@Operation(summary = "获得装册列表")
|
||||||
|
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
|
||||||
|
@PreAuthorize("@ss.hasPermission('archives:packages:query')")
|
||||||
|
public CommonResult<List<PackagesRespVO>> getPackagesList(@RequestParam("ids") Collection<Long> ids) {
|
||||||
|
List<PackagesDO> list = packagesService.getPackagesList(ids);
|
||||||
|
return success(PackagesConvert.INSTANCE.convertList(list));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得装册分页")
|
||||||
|
@PreAuthorize("@ss.hasPermission('archives:packages:query')")
|
||||||
|
public CommonResult<PageResult<PackagesRespVO>> getPackagesPage(@Valid PackagesPageReqVO pageVO) {
|
||||||
|
PageResult<PackagesDO> pageResult = packagesService.getPackagesPage(pageVO);
|
||||||
|
return success(PackagesConvert.INSTANCE.convertPage(pageResult));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/export-excel")
|
||||||
|
@Operation(summary = "导出装册 Excel")
|
||||||
|
@PreAuthorize("@ss.hasPermission('archives:packages:export')")
|
||||||
|
@OperateLog(type = EXPORT)
|
||||||
|
public void exportPackagesExcel(@Valid PackagesExportReqVO exportReqVO,
|
||||||
|
HttpServletResponse response) throws IOException {
|
||||||
|
List<PackagesDO> list = packagesService.getPackagesList(exportReqVO);
|
||||||
|
// 导出 Excel
|
||||||
|
List<PackagesExcelVO> datas = PackagesConvert.INSTANCE.convertList02(list);
|
||||||
|
ExcelUtils.write(response, "装册.xls", "数据", PackagesExcelVO.class, datas);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package cn.iocoder.yudao.module.archives.controller.admin.packages.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 装册创建 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class PackagesCreateReqVO extends PackagesBaseVO {
|
||||||
|
@Schema(description = "全宗号")
|
||||||
|
@NotNull(message = "全宗号不能为空")
|
||||||
|
private String caseNum;
|
||||||
|
|
||||||
|
@Schema(description = "目录号")
|
||||||
|
@NotNull(message = "目录号不能为空")
|
||||||
|
private String catalogNum;
|
||||||
|
|
||||||
|
@Schema(description = "案卷号")
|
||||||
|
@NotNull(message = "案卷号不能为空")
|
||||||
|
private String filesNum;
|
||||||
|
}
|
@ -0,0 +1,97 @@
|
|||||||
|
package cn.iocoder.yudao.module.archives.controller.admin.packages.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 装册 Excel VO
|
||||||
|
*
|
||||||
|
* @author devin1
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class PackagesExcelVO {
|
||||||
|
|
||||||
|
@ExcelProperty("主键")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ExcelProperty("库房id")
|
||||||
|
private Long depotId;
|
||||||
|
|
||||||
|
@ExcelProperty("库房名称")
|
||||||
|
private String depotName;
|
||||||
|
|
||||||
|
@ExcelProperty("档案柜id")
|
||||||
|
private Long cabinetId;
|
||||||
|
|
||||||
|
@ExcelProperty("档案柜名称")
|
||||||
|
private String cabinetName;
|
||||||
|
|
||||||
|
@ExcelProperty("档案id")
|
||||||
|
private Long recordId;
|
||||||
|
|
||||||
|
@ExcelProperty("业务实体id")
|
||||||
|
private Long companyId;
|
||||||
|
|
||||||
|
@ExcelProperty("业务实体")
|
||||||
|
private String company;
|
||||||
|
|
||||||
|
@ExcelProperty("会计年份")
|
||||||
|
private String year;
|
||||||
|
|
||||||
|
@ExcelProperty("会计月份")
|
||||||
|
private String period;
|
||||||
|
|
||||||
|
@ExcelProperty("负责人名称")
|
||||||
|
private String manegeName;
|
||||||
|
|
||||||
|
@ExcelProperty("全宗号")
|
||||||
|
private String caseNum;
|
||||||
|
|
||||||
|
@ExcelProperty("目录号")
|
||||||
|
private String catalogNum;
|
||||||
|
|
||||||
|
@ExcelProperty("案卷号")
|
||||||
|
private String filesNum;
|
||||||
|
|
||||||
|
@ExcelProperty("关联号")
|
||||||
|
private Long flowId;
|
||||||
|
|
||||||
|
@ExcelProperty("创建日期")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@ExcelProperty("状态待装册,已装册")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@ExcelProperty("备注")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
@ExcelProperty("装册时间")
|
||||||
|
private String packageTime;
|
||||||
|
|
||||||
|
@ExcelProperty("所属部门id")
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
|
@ExcelProperty("用户id")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@ExcelProperty("所属部门")
|
||||||
|
private String deptName;
|
||||||
|
|
||||||
|
@ExcelProperty("制单人")
|
||||||
|
private String createBy;
|
||||||
|
|
||||||
|
@ExcelProperty("条码地址")
|
||||||
|
private String codeUrl;
|
||||||
|
|
||||||
|
@ExcelProperty("条码值")
|
||||||
|
private String codeValue;
|
||||||
|
|
||||||
|
@ExcelProperty("装册数量")
|
||||||
|
private Integer packageNum;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,95 @@
|
|||||||
|
package cn.iocoder.yudao.module.archives.controller.admin.packages.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 装册分页 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class PackagesPageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@Schema(description = "库房id", example = "27849")
|
||||||
|
private Long depotId;
|
||||||
|
|
||||||
|
@Schema(description = "库房名称", example = "芋艿")
|
||||||
|
private String depotName;
|
||||||
|
|
||||||
|
@Schema(description = "档案柜id", example = "13350")
|
||||||
|
private Long cabinetId;
|
||||||
|
|
||||||
|
@Schema(description = "档案柜名称", example = "芋艿")
|
||||||
|
private String cabinetName;
|
||||||
|
|
||||||
|
@Schema(description = "档案id", example = "320")
|
||||||
|
private Long recordId;
|
||||||
|
|
||||||
|
@Schema(description = "业务实体id", example = "26066")
|
||||||
|
private Long companyId;
|
||||||
|
|
||||||
|
@Schema(description = "业务实体")
|
||||||
|
private String company;
|
||||||
|
|
||||||
|
@Schema(description = "会计年份")
|
||||||
|
private String year;
|
||||||
|
|
||||||
|
@Schema(description = "会计月份")
|
||||||
|
private String period;
|
||||||
|
|
||||||
|
@Schema(description = "负责人名称", example = "王五")
|
||||||
|
private String manegeName;
|
||||||
|
|
||||||
|
@Schema(description = "全宗号")
|
||||||
|
private String caseNum;
|
||||||
|
|
||||||
|
@Schema(description = "目录号")
|
||||||
|
private String catalogNum;
|
||||||
|
|
||||||
|
@Schema(description = "案卷号")
|
||||||
|
private String filesNum;
|
||||||
|
|
||||||
|
@Schema(description = "关联号", example = "6116")
|
||||||
|
private Long flowId;
|
||||||
|
|
||||||
|
@Schema(description = "创建日期")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] createTime;
|
||||||
|
|
||||||
|
@Schema(description = "状态待装册,已装册", example = "1")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@Schema(description = "备注", example = "随便")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
@Schema(description = "装册时间")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] packageTime;
|
||||||
|
|
||||||
|
@Schema(description = "所属部门id", example = "29567")
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
|
@Schema(description = "用户id", example = "12826")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@Schema(description = "所属部门", example = "张三")
|
||||||
|
private String deptName;
|
||||||
|
|
||||||
|
@Schema(description = "制单人")
|
||||||
|
private String createBy;
|
||||||
|
|
||||||
|
@Schema(description = "条码地址", example = "https://www.iocoder.cn")
|
||||||
|
private String codeUrl;
|
||||||
|
|
||||||
|
@Schema(description = "条码值")
|
||||||
|
private String codeValue;
|
||||||
|
|
||||||
|
@Schema(description = "装册数量")
|
||||||
|
private Integer packageNum;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package cn.iocoder.yudao.module.archives.controller.admin.packages.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 装册 Response VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class PackagesRespVO extends PackagesBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "18922")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "创建日期")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package cn.iocoder.yudao.module.archives.controller.admin.packages.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 装册更新 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class PackagesUpdateReqVO extends PackagesBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "18922")
|
||||||
|
@NotNull(message = "主键不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package cn.iocoder.yudao.module.archives.convert.packages;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
import cn.iocoder.yudao.module.archives.controller.admin.packages.vo.*;
|
||||||
|
import cn.iocoder.yudao.module.archives.dal.dataobject.packages.PackagesDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 装册 Convert
|
||||||
|
*
|
||||||
|
* @author devin1
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface PackagesConvert {
|
||||||
|
|
||||||
|
PackagesConvert INSTANCE = Mappers.getMapper(PackagesConvert.class);
|
||||||
|
|
||||||
|
PackagesDO convert(PackagesCreateReqVO bean);
|
||||||
|
|
||||||
|
PackagesDO convert(PackagesUpdateReqVO bean);
|
||||||
|
|
||||||
|
PackagesRespVO convert(PackagesDO bean);
|
||||||
|
|
||||||
|
List<PackagesRespVO> convertList(List<PackagesDO> list);
|
||||||
|
|
||||||
|
PageResult<PackagesRespVO> convertPage(PageResult<PackagesDO> page);
|
||||||
|
|
||||||
|
List<PackagesExcelVO> convertList02(List<PackagesDO> list);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
package cn.iocoder.yudao.module.archives.dal.mysql.packages;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import cn.iocoder.yudao.module.archives.dal.dataobject.packages.PackagesDO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import cn.iocoder.yudao.module.archives.controller.admin.packages.vo.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 装册 Mapper
|
||||||
|
*
|
||||||
|
* @author devin1
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface PackagesMapper extends BaseMapperX<PackagesDO> {
|
||||||
|
|
||||||
|
default PageResult<PackagesDO> selectPage(PackagesPageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<PackagesDO>()
|
||||||
|
.eqIfPresent(PackagesDO::getDepotId, reqVO.getDepotId())
|
||||||
|
.likeIfPresent(PackagesDO::getDepotName, reqVO.getDepotName())
|
||||||
|
.eqIfPresent(PackagesDO::getCabinetId, reqVO.getCabinetId())
|
||||||
|
.likeIfPresent(PackagesDO::getCabinetName, reqVO.getCabinetName())
|
||||||
|
.eqIfPresent(PackagesDO::getRecordId, reqVO.getRecordId())
|
||||||
|
.eqIfPresent(PackagesDO::getCompanyId, reqVO.getCompanyId())
|
||||||
|
.eqIfPresent(PackagesDO::getCompany, reqVO.getCompany())
|
||||||
|
.eqIfPresent(PackagesDO::getYear, reqVO.getYear())
|
||||||
|
.eqIfPresent(PackagesDO::getPeriod, reqVO.getPeriod())
|
||||||
|
.likeIfPresent(PackagesDO::getManegeName, reqVO.getManegeName())
|
||||||
|
.eqIfPresent(PackagesDO::getCaseNum, reqVO.getCaseNum())
|
||||||
|
.eqIfPresent(PackagesDO::getCatalogNum, reqVO.getCatalogNum())
|
||||||
|
.eqIfPresent(PackagesDO::getFilesNum, reqVO.getFilesNum())
|
||||||
|
.eqIfPresent(PackagesDO::getFlowId, reqVO.getFlowId())
|
||||||
|
.betweenIfPresent(PackagesDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.eqIfPresent(PackagesDO::getStatus, reqVO.getStatus())
|
||||||
|
.eqIfPresent(PackagesDO::getRemark, reqVO.getRemark())
|
||||||
|
.betweenIfPresent(PackagesDO::getPackageTime, reqVO.getPackageTime())
|
||||||
|
.eqIfPresent(PackagesDO::getDeptId, reqVO.getDeptId())
|
||||||
|
.eqIfPresent(PackagesDO::getUserId, reqVO.getUserId())
|
||||||
|
.likeIfPresent(PackagesDO::getDeptName, reqVO.getDeptName())
|
||||||
|
.eqIfPresent(PackagesDO::getCreateBy, reqVO.getCreateBy())
|
||||||
|
.eqIfPresent(PackagesDO::getCodeUrl, reqVO.getCodeUrl())
|
||||||
|
.eqIfPresent(PackagesDO::getCodeValue, reqVO.getCodeValue())
|
||||||
|
.eqIfPresent(PackagesDO::getPackageNum, reqVO.getPackageNum())
|
||||||
|
.orderByDesc(PackagesDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
default List<PackagesDO> selectList(PackagesExportReqVO reqVO) {
|
||||||
|
return selectList(new LambdaQueryWrapperX<PackagesDO>()
|
||||||
|
.eqIfPresent(PackagesDO::getDepotId, reqVO.getDepotId())
|
||||||
|
.likeIfPresent(PackagesDO::getDepotName, reqVO.getDepotName())
|
||||||
|
.eqIfPresent(PackagesDO::getCabinetId, reqVO.getCabinetId())
|
||||||
|
.likeIfPresent(PackagesDO::getCabinetName, reqVO.getCabinetName())
|
||||||
|
.eqIfPresent(PackagesDO::getRecordId, reqVO.getRecordId())
|
||||||
|
.eqIfPresent(PackagesDO::getCompanyId, reqVO.getCompanyId())
|
||||||
|
.eqIfPresent(PackagesDO::getCompany, reqVO.getCompany())
|
||||||
|
.eqIfPresent(PackagesDO::getYear, reqVO.getYear())
|
||||||
|
.eqIfPresent(PackagesDO::getPeriod, reqVO.getPeriod())
|
||||||
|
.likeIfPresent(PackagesDO::getManegeName, reqVO.getManegeName())
|
||||||
|
.eqIfPresent(PackagesDO::getCaseNum, reqVO.getCaseNum())
|
||||||
|
.eqIfPresent(PackagesDO::getCatalogNum, reqVO.getCatalogNum())
|
||||||
|
.eqIfPresent(PackagesDO::getFilesNum, reqVO.getFilesNum())
|
||||||
|
.eqIfPresent(PackagesDO::getFlowId, reqVO.getFlowId())
|
||||||
|
.betweenIfPresent(PackagesDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.eqIfPresent(PackagesDO::getStatus, reqVO.getStatus())
|
||||||
|
.eqIfPresent(PackagesDO::getRemark, reqVO.getRemark())
|
||||||
|
.betweenIfPresent(PackagesDO::getPackageTime, reqVO.getPackageTime())
|
||||||
|
.eqIfPresent(PackagesDO::getDeptId, reqVO.getDeptId())
|
||||||
|
.eqIfPresent(PackagesDO::getUserId, reqVO.getUserId())
|
||||||
|
.likeIfPresent(PackagesDO::getDeptName, reqVO.getDeptName())
|
||||||
|
.eqIfPresent(PackagesDO::getCreateBy, reqVO.getCreateBy())
|
||||||
|
.eqIfPresent(PackagesDO::getCodeUrl, reqVO.getCodeUrl())
|
||||||
|
.eqIfPresent(PackagesDO::getCodeValue, reqVO.getCodeValue())
|
||||||
|
.eqIfPresent(PackagesDO::getPackageNum, reqVO.getPackageNum())
|
||||||
|
.orderByDesc(PackagesDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package cn.iocoder.yudao.module.archives.service.packages;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import cn.iocoder.yudao.module.archives.controller.admin.packages.vo.*;
|
||||||
|
import cn.iocoder.yudao.module.archives.dal.dataobject.packages.PackagesDO;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 装册 Service 接口
|
||||||
|
*
|
||||||
|
* @author devin1
|
||||||
|
*/
|
||||||
|
public interface PackagesService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建装册
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
Long createPackages(@Valid PackagesCreateReqVO createReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新装册
|
||||||
|
*
|
||||||
|
* @param updateReqVO 更新信息
|
||||||
|
*/
|
||||||
|
void updatePackages(@Valid PackagesUpdateReqVO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除装册
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
*/
|
||||||
|
void deletePackages(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得装册
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @return 装册
|
||||||
|
*/
|
||||||
|
PackagesDO getPackages(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得装册列表
|
||||||
|
*
|
||||||
|
* @param ids 编号
|
||||||
|
* @return 装册列表
|
||||||
|
*/
|
||||||
|
List<PackagesDO> getPackagesList(Collection<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得装册分页
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页查询
|
||||||
|
* @return 装册分页
|
||||||
|
*/
|
||||||
|
PageResult<PackagesDO> getPackagesPage(PackagesPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得装册列表, 用于 Excel 导出
|
||||||
|
*
|
||||||
|
* @param exportReqVO 查询条件
|
||||||
|
* @return 装册列表
|
||||||
|
*/
|
||||||
|
List<PackagesDO> getPackagesList(PackagesExportReqVO exportReqVO);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,119 @@
|
|||||||
|
package cn.iocoder.yudao.module.archives.service.packages;
|
||||||
|
|
||||||
|
import cn.hutool.core.io.IoUtil;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.FileUtils;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.barcode.BarcodeUtil;
|
||||||
|
import cn.iocoder.yudao.module.infra.service.file.FileService;
|
||||||
|
import me.zhyd.oauth.log.Log;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.*;
|
||||||
|
import cn.iocoder.yudao.module.archives.controller.admin.packages.vo.*;
|
||||||
|
import cn.iocoder.yudao.module.archives.dal.dataobject.packages.PackagesDO;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.archives.convert.packages.PackagesConvert;
|
||||||
|
import cn.iocoder.yudao.module.archives.dal.mysql.packages.PackagesMapper;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static cn.iocoder.yudao.module.archives.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 装册 Service 实现类
|
||||||
|
*
|
||||||
|
* @author devin1
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class PackagesServiceImpl implements PackagesService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PackagesMapper packagesMapper;
|
||||||
|
@Resource
|
||||||
|
private FileService fileService;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createPackages(PackagesCreateReqVO createReqVO) {
|
||||||
|
// 插入
|
||||||
|
PackagesDO packages = PackagesConvert.INSTANCE.convert(createReqVO);
|
||||||
|
File buf = BarcodeUtil.generateBarCode(packages.getCaseNum()+"-"+packages.getCatalogNum()+"-"+packages.getFilesNum(), "QR_CODE",
|
||||||
|
"./tmp/Packages/" + packages.getCaseNum()+"-"+packages.getCatalogNum()+"-"+packages.getFilesNum() + ".png");
|
||||||
|
MultipartFile file = FileUtils.getMultipartFile(buf);
|
||||||
|
String url="";
|
||||||
|
try {
|
||||||
|
url = fileService.createFile(null, null, IoUtil.readBytes(file.getInputStream()));
|
||||||
|
} catch (IOException e) {
|
||||||
|
Log.error(e.toString());
|
||||||
|
}
|
||||||
|
packages.setCodeUrl(url);
|
||||||
|
packages.setCodeValue(packages.getCaseNum()+"-"+packages.getCatalogNum()+"-"+packages.getFilesNum());
|
||||||
|
packagesMapper.insert(packages);
|
||||||
|
// 返回
|
||||||
|
return packages.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updatePackages(PackagesUpdateReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
validatePackagesExists(updateReqVO.getId());
|
||||||
|
// 更新
|
||||||
|
PackagesDO updateObj = PackagesConvert.INSTANCE.convert(updateReqVO);
|
||||||
|
PackagesDO packagesDO = packagesMapper.selectById(updateReqVO.getId());
|
||||||
|
boolean b = packagesDO.getCaseNum().equals(updateObj.getCaseNum()) && packagesDO.getCatalogNum().equals(updateObj.getCatalogNum()) && packagesDO.getFilesNum().equals(updateObj.getFilesNum());
|
||||||
|
if (!b){
|
||||||
|
File buf = BarcodeUtil.generateBarCode(updateObj.getCaseNum()+"-"+updateObj.getCatalogNum()+"-"+updateObj.getFilesNum(), "QR_CODE",
|
||||||
|
"./tmp/Packages/" + updateObj.getCaseNum()+"-"+updateObj.getCatalogNum()+"-"+updateObj.getFilesNum() + ".png");
|
||||||
|
MultipartFile file = FileUtils.getMultipartFile(buf);
|
||||||
|
String url="";
|
||||||
|
try {
|
||||||
|
url = fileService.createFile(null, null, IoUtil.readBytes(file.getInputStream()));
|
||||||
|
} catch (IOException e) {
|
||||||
|
Log.error(e.toString());
|
||||||
|
}
|
||||||
|
updateObj.setCodeUrl(url);
|
||||||
|
updateObj.setCodeValue(updateObj.getCaseNum()+"-"+updateObj.getCatalogNum()+"-"+updateObj.getFilesNum());
|
||||||
|
}
|
||||||
|
packagesMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deletePackages(Long id) {
|
||||||
|
// 校验存在
|
||||||
|
validatePackagesExists(id);
|
||||||
|
// 删除
|
||||||
|
packagesMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validatePackagesExists(Long id) {
|
||||||
|
if (packagesMapper.selectById(id) == null) {
|
||||||
|
throw exception(PACKAGES_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PackagesDO getPackages(Long id) {
|
||||||
|
return packagesMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PackagesDO> getPackagesList(Collection<Long> ids) {
|
||||||
|
return packagesMapper.selectBatchIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<PackagesDO> getPackagesPage(PackagesPageReqVO pageReqVO) {
|
||||||
|
return packagesMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PackagesDO> getPackagesList(PackagesExportReqVO exportReqVO) {
|
||||||
|
return packagesMapper.selectList(exportReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,343 @@
|
|||||||
|
package cn.iocoder.yudao.module.archives.service.packages;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.archives.controller.admin.packages.vo.*;
|
||||||
|
import cn.iocoder.yudao.module.archives.dal.dataobject.packages.PackagesDO;
|
||||||
|
import cn.iocoder.yudao.module.archives.dal.mysql.packages.PackagesMapper;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.hutool.core.util.RandomUtil.*;
|
||||||
|
import static cn.iocoder.yudao.module.archives.enums.ErrorCodeConstants.*;
|
||||||
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
|
||||||
|
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link PackagesServiceImpl} 的单元测试类
|
||||||
|
*
|
||||||
|
* @author devin1
|
||||||
|
*/
|
||||||
|
@Import(PackagesServiceImpl.class)
|
||||||
|
public class PackagesServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PackagesServiceImpl packagesService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PackagesMapper packagesMapper;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCreatePackages_success() {
|
||||||
|
// 准备参数
|
||||||
|
PackagesCreateReqVO reqVO = randomPojo(PackagesCreateReqVO.class);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
Long packagesId = packagesService.createPackages(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertNotNull(packagesId);
|
||||||
|
// 校验记录的属性是否正确
|
||||||
|
PackagesDO packages = packagesMapper.selectById(packagesId);
|
||||||
|
assertPojoEquals(reqVO, packages);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdatePackages_success() {
|
||||||
|
// mock 数据
|
||||||
|
PackagesDO dbPackages = randomPojo(PackagesDO.class);
|
||||||
|
packagesMapper.insert(dbPackages);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
PackagesUpdateReqVO reqVO = randomPojo(PackagesUpdateReqVO.class, o -> {
|
||||||
|
o.setId(dbPackages.getId()); // 设置更新的 ID
|
||||||
|
});
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
packagesService.updatePackages(reqVO);
|
||||||
|
// 校验是否更新正确
|
||||||
|
PackagesDO packages = packagesMapper.selectById(reqVO.getId()); // 获取最新的
|
||||||
|
assertPojoEquals(reqVO, packages);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdatePackages_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
PackagesUpdateReqVO reqVO = randomPojo(PackagesUpdateReqVO.class);
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> packagesService.updatePackages(reqVO), PACKAGES_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeletePackages_success() {
|
||||||
|
// mock 数据
|
||||||
|
PackagesDO dbPackages = randomPojo(PackagesDO.class);
|
||||||
|
packagesMapper.insert(dbPackages);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
Long id = dbPackages.getId();
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
packagesService.deletePackages(id);
|
||||||
|
// 校验数据不存在了
|
||||||
|
assertNull(packagesMapper.selectById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeletePackages_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
Long id = randomLongId();
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> packagesService.deletePackages(id), PACKAGES_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetPackagesPage() {
|
||||||
|
// mock 数据
|
||||||
|
PackagesDO dbPackages = randomPojo(PackagesDO.class, o -> { // 等会查询到
|
||||||
|
o.setDepotId(null);
|
||||||
|
o.setDepotName(null);
|
||||||
|
o.setCabinetId(null);
|
||||||
|
o.setCabinetName(null);
|
||||||
|
o.setRecordId(null);
|
||||||
|
o.setCompanyId(null);
|
||||||
|
o.setCompany(null);
|
||||||
|
o.setYear(null);
|
||||||
|
o.setPeriod(null);
|
||||||
|
o.setManegeName(null);
|
||||||
|
o.setCaseNum(null);
|
||||||
|
o.setCatalogNum(null);
|
||||||
|
o.setFilesNum(null);
|
||||||
|
o.setFlowId(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
o.setStatus(null);
|
||||||
|
o.setRemark(null);
|
||||||
|
o.setPackageTime(null);
|
||||||
|
o.setDeptId(null);
|
||||||
|
o.setUserId(null);
|
||||||
|
o.setDeptName(null);
|
||||||
|
o.setCreateBy(null);
|
||||||
|
o.setCodeUrl(null);
|
||||||
|
o.setCodeValue(null);
|
||||||
|
o.setPackageNum(null);
|
||||||
|
});
|
||||||
|
packagesMapper.insert(dbPackages);
|
||||||
|
// 测试 depotId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setDepotId(null)));
|
||||||
|
// 测试 depotName 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setDepotName(null)));
|
||||||
|
// 测试 cabinetId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCabinetId(null)));
|
||||||
|
// 测试 cabinetName 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCabinetName(null)));
|
||||||
|
// 测试 recordId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setRecordId(null)));
|
||||||
|
// 测试 companyId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCompanyId(null)));
|
||||||
|
// 测试 company 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCompany(null)));
|
||||||
|
// 测试 year 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setYear(null)));
|
||||||
|
// 测试 period 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setPeriod(null)));
|
||||||
|
// 测试 manegeName 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setManegeName(null)));
|
||||||
|
// 测试 caseNum 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCaseNum(null)));
|
||||||
|
// 测试 catalogNum 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCatalogNum(null)));
|
||||||
|
// 测试 filesNum 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setFilesNum(null)));
|
||||||
|
// 测试 flowId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setFlowId(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCreateTime(null)));
|
||||||
|
// 测试 status 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setStatus(null)));
|
||||||
|
// 测试 remark 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setRemark(null)));
|
||||||
|
// 测试 packageTime 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setPackageTime(null)));
|
||||||
|
// 测试 deptId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setDeptId(null)));
|
||||||
|
// 测试 userId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setUserId(null)));
|
||||||
|
// 测试 deptName 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setDeptName(null)));
|
||||||
|
// 测试 createBy 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCreateBy(null)));
|
||||||
|
// 测试 codeUrl 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCodeUrl(null)));
|
||||||
|
// 测试 codeValue 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCodeValue(null)));
|
||||||
|
// 测试 packageNum 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setPackageNum(null)));
|
||||||
|
// 准备参数
|
||||||
|
PackagesPageReqVO reqVO = new PackagesPageReqVO();
|
||||||
|
reqVO.setDepotId(null);
|
||||||
|
reqVO.setDepotName(null);
|
||||||
|
reqVO.setCabinetId(null);
|
||||||
|
reqVO.setCabinetName(null);
|
||||||
|
reqVO.setRecordId(null);
|
||||||
|
reqVO.setCompanyId(null);
|
||||||
|
reqVO.setCompany(null);
|
||||||
|
reqVO.setYear(null);
|
||||||
|
reqVO.setPeriod(null);
|
||||||
|
reqVO.setManegeName(null);
|
||||||
|
reqVO.setCaseNum(null);
|
||||||
|
reqVO.setCatalogNum(null);
|
||||||
|
reqVO.setFilesNum(null);
|
||||||
|
reqVO.setFlowId(null);
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setStatus(null);
|
||||||
|
reqVO.setRemark(null);
|
||||||
|
reqVO.setPackageTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setDeptId(null);
|
||||||
|
reqVO.setUserId(null);
|
||||||
|
reqVO.setDeptName(null);
|
||||||
|
reqVO.setCreateBy(null);
|
||||||
|
reqVO.setCodeUrl(null);
|
||||||
|
reqVO.setCodeValue(null);
|
||||||
|
reqVO.setPackageNum(null);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
PageResult<PackagesDO> pageResult = packagesService.getPackagesPage(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, pageResult.getTotal());
|
||||||
|
assertEquals(1, pageResult.getList().size());
|
||||||
|
assertPojoEquals(dbPackages, pageResult.getList().get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetPackagesList() {
|
||||||
|
// mock 数据
|
||||||
|
PackagesDO dbPackages = randomPojo(PackagesDO.class, o -> { // 等会查询到
|
||||||
|
o.setDepotId(null);
|
||||||
|
o.setDepotName(null);
|
||||||
|
o.setCabinetId(null);
|
||||||
|
o.setCabinetName(null);
|
||||||
|
o.setRecordId(null);
|
||||||
|
o.setCompanyId(null);
|
||||||
|
o.setCompany(null);
|
||||||
|
o.setYear(null);
|
||||||
|
o.setPeriod(null);
|
||||||
|
o.setManegeName(null);
|
||||||
|
o.setCaseNum(null);
|
||||||
|
o.setCatalogNum(null);
|
||||||
|
o.setFilesNum(null);
|
||||||
|
o.setFlowId(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
o.setStatus(null);
|
||||||
|
o.setRemark(null);
|
||||||
|
o.setPackageTime(null);
|
||||||
|
o.setDeptId(null);
|
||||||
|
o.setUserId(null);
|
||||||
|
o.setDeptName(null);
|
||||||
|
o.setCreateBy(null);
|
||||||
|
o.setCodeUrl(null);
|
||||||
|
o.setCodeValue(null);
|
||||||
|
o.setPackageNum(null);
|
||||||
|
});
|
||||||
|
packagesMapper.insert(dbPackages);
|
||||||
|
// 测试 depotId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setDepotId(null)));
|
||||||
|
// 测试 depotName 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setDepotName(null)));
|
||||||
|
// 测试 cabinetId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCabinetId(null)));
|
||||||
|
// 测试 cabinetName 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCabinetName(null)));
|
||||||
|
// 测试 recordId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setRecordId(null)));
|
||||||
|
// 测试 companyId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCompanyId(null)));
|
||||||
|
// 测试 company 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCompany(null)));
|
||||||
|
// 测试 year 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setYear(null)));
|
||||||
|
// 测试 period 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setPeriod(null)));
|
||||||
|
// 测试 manegeName 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setManegeName(null)));
|
||||||
|
// 测试 caseNum 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCaseNum(null)));
|
||||||
|
// 测试 catalogNum 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCatalogNum(null)));
|
||||||
|
// 测试 filesNum 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setFilesNum(null)));
|
||||||
|
// 测试 flowId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setFlowId(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCreateTime(null)));
|
||||||
|
// 测试 status 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setStatus(null)));
|
||||||
|
// 测试 remark 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setRemark(null)));
|
||||||
|
// 测试 packageTime 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setPackageTime(null)));
|
||||||
|
// 测试 deptId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setDeptId(null)));
|
||||||
|
// 测试 userId 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setUserId(null)));
|
||||||
|
// 测试 deptName 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setDeptName(null)));
|
||||||
|
// 测试 createBy 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCreateBy(null)));
|
||||||
|
// 测试 codeUrl 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCodeUrl(null)));
|
||||||
|
// 测试 codeValue 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setCodeValue(null)));
|
||||||
|
// 测试 packageNum 不匹配
|
||||||
|
packagesMapper.insert(cloneIgnoreId(dbPackages, o -> o.setPackageNum(null)));
|
||||||
|
// 准备参数
|
||||||
|
PackagesExportReqVO reqVO = new PackagesExportReqVO();
|
||||||
|
reqVO.setDepotId(null);
|
||||||
|
reqVO.setDepotName(null);
|
||||||
|
reqVO.setCabinetId(null);
|
||||||
|
reqVO.setCabinetName(null);
|
||||||
|
reqVO.setRecordId(null);
|
||||||
|
reqVO.setCompanyId(null);
|
||||||
|
reqVO.setCompany(null);
|
||||||
|
reqVO.setYear(null);
|
||||||
|
reqVO.setPeriod(null);
|
||||||
|
reqVO.setManegeName(null);
|
||||||
|
reqVO.setCaseNum(null);
|
||||||
|
reqVO.setCatalogNum(null);
|
||||||
|
reqVO.setFilesNum(null);
|
||||||
|
reqVO.setFlowId(null);
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setStatus(null);
|
||||||
|
reqVO.setRemark(null);
|
||||||
|
reqVO.setPackageTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setDeptId(null);
|
||||||
|
reqVO.setUserId(null);
|
||||||
|
reqVO.setDeptName(null);
|
||||||
|
reqVO.setCreateBy(null);
|
||||||
|
reqVO.setCodeUrl(null);
|
||||||
|
reqVO.setCodeValue(null);
|
||||||
|
reqVO.setPackageNum(null);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
List<PackagesDO> list = packagesService.getPackagesList(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, list.size());
|
||||||
|
assertPojoEquals(dbPackages, list.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue