1. 新增帆软报表导入功能
2. 新增物料扩展牌号属性功能
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package com.zt.plat.module.base.api.materialgradeext;
|
||||
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.module.base.api.materialgradeext.dto.MaterialGradeExtPageReqDTO;
|
||||
import com.zt.plat.module.base.api.materialgradeext.dto.MaterialGradeExtRespDTO;
|
||||
import com.zt.plat.module.base.api.materialgradeext.dto.MaterialGradeExtSaveReqDTO;
|
||||
import com.zt.plat.module.base.enums.ApiConstants;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@FeignClient(name = ApiConstants.NAME)
|
||||
@Tag(name = "RPC 服务 - 物料牌号扩展")
|
||||
public interface MaterialGradeExtApi {
|
||||
|
||||
String PREFIX = ApiConstants.PREFIX + "/material-grade-ext";
|
||||
|
||||
@PostMapping(PREFIX + "/create")
|
||||
@Operation(summary = "创建物料牌号扩展")
|
||||
CommonResult<MaterialGradeExtRespDTO> create(@Valid @RequestBody MaterialGradeExtSaveReqDTO reqDTO);
|
||||
|
||||
@PutMapping(PREFIX + "/update")
|
||||
@Operation(summary = "更新物料牌号扩展")
|
||||
CommonResult<Boolean> update(@Valid @RequestBody MaterialGradeExtSaveReqDTO reqDTO);
|
||||
|
||||
@DeleteMapping(PREFIX + "/delete")
|
||||
@Operation(summary = "删除物料牌号扩展")
|
||||
CommonResult<Boolean> delete(@RequestParam("id") Long id);
|
||||
|
||||
@DeleteMapping(PREFIX + "/delete-list")
|
||||
@Operation(summary = "批量删除物料牌号扩展")
|
||||
CommonResult<Boolean> deleteList(@RequestBody List<Long> ids);
|
||||
|
||||
@GetMapping(PREFIX + "/get")
|
||||
@Operation(summary = "获得物料牌号扩展")
|
||||
CommonResult<MaterialGradeExtRespDTO> get(@RequestParam("id") Long id);
|
||||
|
||||
@PostMapping(PREFIX + "/page")
|
||||
@Operation(summary = "获得物料牌号扩展分页")
|
||||
CommonResult<PageResult<MaterialGradeExtRespDTO>> getPage(@Valid @RequestBody MaterialGradeExtPageReqDTO pageReqDTO);
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.zt.plat.module.base.api.materialgradeext.dto;
|
||||
|
||||
import com.zt.plat.framework.common.pojo.PageParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@Data
|
||||
public class MaterialGradeExtPageReqDTO extends PageParam {
|
||||
|
||||
private String companyCode;
|
||||
private String companyName;
|
||||
private String materialCode;
|
||||
private String materialName;
|
||||
private String chineseBrand;
|
||||
private String englishBrand;
|
||||
private String specificationModel;
|
||||
private String lineType;
|
||||
private String packageDesc;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.zt.plat.module.base.api.materialgradeext.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class MaterialGradeExtRespDTO {
|
||||
|
||||
@Schema(description = "主键ID")
|
||||
private Long id;
|
||||
|
||||
private String companyCode;
|
||||
private String companyName;
|
||||
private String materialCode;
|
||||
private String materialName;
|
||||
private String chineseBrand;
|
||||
private String englishBrand;
|
||||
private String specificationModel;
|
||||
private String lineType;
|
||||
private String packageDesc;
|
||||
private LocalDateTime createTime;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.zt.plat.module.base.api.materialgradeext.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class MaterialGradeExtSaveReqDTO {
|
||||
|
||||
@Schema(description = "主键ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "公司编码")
|
||||
private String companyCode;
|
||||
|
||||
@Schema(description = "公司名称")
|
||||
private String companyName;
|
||||
|
||||
@Schema(description = "物料编码")
|
||||
private String materialCode;
|
||||
|
||||
@Schema(description = "物料名称")
|
||||
private String materialName;
|
||||
|
||||
@Schema(description = "中文牌号")
|
||||
private String chineseBrand;
|
||||
|
||||
@Schema(description = "英文牌号")
|
||||
private String englishBrand;
|
||||
|
||||
@Schema(description = "规格型号")
|
||||
private String specificationModel;
|
||||
|
||||
@Schema(description = "线别")
|
||||
private String lineType;
|
||||
|
||||
@Schema(description = "包装描述")
|
||||
private String packageDesc;
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.zt.plat.module.base.api.materialgradeext;
|
||||
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.module.base.api.materialgradeext.dto.MaterialGradeExtPageReqDTO;
|
||||
import com.zt.plat.module.base.api.materialgradeext.dto.MaterialGradeExtRespDTO;
|
||||
import com.zt.plat.module.base.api.materialgradeext.dto.MaterialGradeExtSaveReqDTO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtPageReqVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtRespVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtSaveReqVO;
|
||||
import com.zt.plat.module.base.service.materialgradeext.MaterialGradeExtService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
||||
|
||||
@RestController
|
||||
@Validated
|
||||
public class MaterialGradeExtApiImpl implements MaterialGradeExtApi {
|
||||
|
||||
@Resource
|
||||
private MaterialGradeExtService materialGradeExtService;
|
||||
|
||||
@Override
|
||||
public CommonResult<MaterialGradeExtRespDTO> create(MaterialGradeExtSaveReqDTO reqDTO) {
|
||||
MaterialGradeExtRespVO respVO = materialGradeExtService.create(BeanUtils.toBean(reqDTO, MaterialGradeExtSaveReqVO.class));
|
||||
return success(BeanUtils.toBean(respVO, MaterialGradeExtRespDTO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> update(MaterialGradeExtSaveReqDTO reqDTO) {
|
||||
materialGradeExtService.update(BeanUtils.toBean(reqDTO, MaterialGradeExtSaveReqVO.class));
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> delete(Long id) {
|
||||
materialGradeExtService.delete(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> deleteList(List<Long> ids) {
|
||||
materialGradeExtService.deleteByIds(ids);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<MaterialGradeExtRespDTO> get(Long id) {
|
||||
MaterialGradeExtRespVO respVO = materialGradeExtService.get(id);
|
||||
return success(BeanUtils.toBean(respVO, MaterialGradeExtRespDTO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<PageResult<MaterialGradeExtRespDTO>> getPage(@RequestBody MaterialGradeExtPageReqDTO pageReqDTO) {
|
||||
MaterialGradeExtPageReqVO pageReqVO = BeanUtils.toBean(pageReqDTO, MaterialGradeExtPageReqVO.class);
|
||||
PageResult<MaterialGradeExtRespVO> pageResult = materialGradeExtService.getPage(pageReqVO);
|
||||
PageResult<MaterialGradeExtRespDTO> dtoResult = BeanUtils.toBean(pageResult, MaterialGradeExtRespDTO.class);
|
||||
return success(dtoResult);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.zt.plat.module.base.config;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 帆软上传配置
|
||||
*/
|
||||
@Component
|
||||
@ConfigurationProperties(prefix = "finereport.upload")
|
||||
public class FineReportUploadProperties {
|
||||
|
||||
/**
|
||||
* 上传目标地址(sidecar 内部 Service),默认指向集群内 fine-report-upload 服务
|
||||
*/
|
||||
private String url = "http://fine-report-upload.ns-f16a3067ca7b434aad127d15eac82503.svc.cluster.local:8081/upload";
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
package com.zt.plat.module.base.controller.admin.finereport;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.module.base.config.FineReportUploadProperties;
|
||||
import com.zt.plat.module.base.controller.admin.finereport.vo.FineReportUploadRespVO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.web.client.RestTemplateBuilder;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.http.*;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.zt.plat.framework.common.pojo.CommonResult.error;
|
||||
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
||||
|
||||
@Tag(name = "管理后台 - 帆软报表上传")
|
||||
@RestController
|
||||
@RequestMapping("/base/fine-report")
|
||||
@Slf4j
|
||||
public class FineReportUploadController {
|
||||
|
||||
private final RestTemplate restTemplate;
|
||||
private final FineReportUploadProperties properties;
|
||||
|
||||
public FineReportUploadController(RestTemplateBuilder builder,
|
||||
FineReportUploadProperties properties) {
|
||||
this.restTemplate = builder
|
||||
.setConnectTimeout(Duration.ofSeconds(5))
|
||||
.setReadTimeout(Duration.ofSeconds(30))
|
||||
.build();
|
||||
this.properties = properties;
|
||||
}
|
||||
|
||||
@PostMapping("/upload")
|
||||
@Operation(summary = "上传帆软报表模板(透传到 sidecar)")
|
||||
@PreAuthorize("@ss.hasPermission('base:fine-report-template:upload')")
|
||||
public CommonResult<FineReportUploadRespVO> upload(@RequestParam("file") MultipartFile file,
|
||||
@Parameter(description = "相对路径,可为空")
|
||||
@RequestParam(value = "path", required = false) String path) {
|
||||
if (file == null || file.isEmpty()) {
|
||||
return error(400, "文件不能为空");
|
||||
}
|
||||
|
||||
String uploadUrl = properties.getUrl();
|
||||
if (StrUtil.isBlank(uploadUrl)) {
|
||||
return error(500, "上传地址未配置");
|
||||
}
|
||||
|
||||
try {
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
|
||||
|
||||
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
|
||||
String filename = file.getOriginalFilename();
|
||||
ByteArrayResource resource = new ByteArrayResource(file.getBytes()) {
|
||||
@Override
|
||||
public String getFilename() {
|
||||
return filename;
|
||||
}
|
||||
};
|
||||
body.add("file", resource);
|
||||
if (StrUtil.isNotBlank(path)) {
|
||||
body.add("path", path);
|
||||
}
|
||||
|
||||
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);
|
||||
ResponseEntity<Map> response = restTemplate.postForEntity(uploadUrl, requestEntity, Map.class);
|
||||
|
||||
FineReportUploadRespVO respVO = new FineReportUploadRespVO();
|
||||
respVO.setFilename(filename);
|
||||
respVO.setBytes(file.getSize());
|
||||
|
||||
Map<?, ?> respBody = response.getBody();
|
||||
if (respBody != null) {
|
||||
Object targetPath = respBody.get("path");
|
||||
if (targetPath != null) {
|
||||
respVO.setTargetPath(String.valueOf(targetPath));
|
||||
}
|
||||
Object status = respBody.get("status");
|
||||
if (status != null) {
|
||||
respVO.setStatus(String.valueOf(status));
|
||||
}
|
||||
}
|
||||
|
||||
return success(respVO);
|
||||
} catch (Exception ex) {
|
||||
log.error("Upload FineReport template failed, url={}, file={}", properties.getUrl(), file.getOriginalFilename(), ex);
|
||||
return error(500, "上传失败: " + ex.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.zt.plat.module.base.controller.admin.finereport.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class FineReportUploadRespVO {
|
||||
|
||||
@Schema(description = "文件名")
|
||||
private String filename;
|
||||
|
||||
@Schema(description = "上传字节数")
|
||||
private Long bytes;
|
||||
|
||||
@Schema(description = "目标路径")
|
||||
private String targetPath;
|
||||
|
||||
@Schema(description = "sidecar 返回的状态")
|
||||
private String status;
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
package com.zt.plat.module.base.controller.admin.materialgradeext;
|
||||
|
||||
import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog;
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO;
|
||||
import com.zt.plat.framework.datapermission.core.annotation.CompanyDataPermissionIgnore;
|
||||
import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtPageReqVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtRespVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtSaveReqVO;
|
||||
import com.zt.plat.module.base.service.materialgradeext.MaterialGradeExtService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
|
||||
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
||||
|
||||
@Tag(name = "管理后台 - 物料牌号扩展")
|
||||
@RestController
|
||||
@RequestMapping("/base/material-grade-ext")
|
||||
@Validated
|
||||
@CompanyDataPermissionIgnore
|
||||
@DeptDataPermissionIgnore
|
||||
public class MaterialGradeExtController {
|
||||
|
||||
@Resource
|
||||
private MaterialGradeExtService materialGradeExtService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建物料牌号扩展")
|
||||
@PreAuthorize("@ss.hasPermission('base:material-grade-ext:create')")
|
||||
public CommonResult<MaterialGradeExtRespVO> create(@Valid @RequestBody MaterialGradeExtSaveReqVO reqVO) {
|
||||
return success(materialGradeExtService.create(reqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新物料牌号扩展")
|
||||
@PreAuthorize("@ss.hasPermission('base:material-grade-ext:update')")
|
||||
public CommonResult<Boolean> update(@Valid @RequestBody MaterialGradeExtSaveReqVO reqVO) {
|
||||
materialGradeExtService.update(reqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除物料牌号扩展")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('base:material-grade-ext:delete')")
|
||||
public CommonResult<Boolean> delete(@RequestParam("id") Long id) {
|
||||
materialGradeExtService.delete(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete-list")
|
||||
@Operation(summary = "批量删除物料牌号扩展")
|
||||
@PreAuthorize("@ss.hasPermission('base:material-grade-ext:delete')")
|
||||
public CommonResult<Boolean> deleteList(@RequestBody BatchDeleteReqVO req) {
|
||||
materialGradeExtService.deleteByIds(req.getIds());
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得物料牌号扩展")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('base:material-grade-ext:query')")
|
||||
public CommonResult<MaterialGradeExtRespVO> get(@RequestParam("id") Long id) {
|
||||
return success(materialGradeExtService.get(id));
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/page", method = {RequestMethod.GET, RequestMethod.POST})
|
||||
@Operation(summary = "获得物料牌号扩展分页")
|
||||
@PreAuthorize("@ss.hasPermission('base:material-grade-ext:query')")
|
||||
public CommonResult<PageResult<MaterialGradeExtRespVO>> getPage(@Valid @RequestBody(required = false) MaterialGradeExtPageReqVO pageReqVO) {
|
||||
if (pageReqVO == null) {
|
||||
pageReqVO = new MaterialGradeExtPageReqVO();
|
||||
}
|
||||
return success(materialGradeExtService.getPage(pageReqVO));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.zt.plat.module.base.controller.admin.materialgradeext.vo;
|
||||
|
||||
import com.zt.plat.framework.common.pojo.PageParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@Schema(description = "管理后台 - 物料牌号扩展分页 Request VO")
|
||||
@Data
|
||||
public class MaterialGradeExtPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "公司编码")
|
||||
private String companyCode;
|
||||
|
||||
@Schema(description = "公司名称")
|
||||
private String companyName;
|
||||
|
||||
@Schema(description = "物料编码")
|
||||
private String materialCode;
|
||||
|
||||
@Schema(description = "物料名称")
|
||||
private String materialName;
|
||||
|
||||
@Schema(description = "中文牌号")
|
||||
private String chineseBrand;
|
||||
|
||||
@Schema(description = "英文牌号")
|
||||
private String englishBrand;
|
||||
|
||||
@Schema(description = "规格型号")
|
||||
private String specificationModel;
|
||||
|
||||
@Schema(description = "线别")
|
||||
private String lineType;
|
||||
|
||||
@Schema(description = "包装描述")
|
||||
private String packageDesc;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.zt.plat.module.base.controller.admin.materialgradeext.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Schema(description = "管理后台 - 物料牌号扩展 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class MaterialGradeExtRespVO {
|
||||
|
||||
@Schema(description = "主键ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "公司编码")
|
||||
private String companyCode;
|
||||
|
||||
@Schema(description = "公司名称")
|
||||
private String companyName;
|
||||
|
||||
@Schema(description = "物料编码")
|
||||
private String materialCode;
|
||||
|
||||
@Schema(description = "物料名称")
|
||||
private String materialName;
|
||||
|
||||
@Schema(description = "中文牌号")
|
||||
private String chineseBrand;
|
||||
|
||||
@Schema(description = "英文牌号")
|
||||
private String englishBrand;
|
||||
|
||||
@Schema(description = "规格型号")
|
||||
private String specificationModel;
|
||||
|
||||
@Schema(description = "线别")
|
||||
private String lineType;
|
||||
|
||||
@Schema(description = "包装描述")
|
||||
private String packageDesc;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.zt.plat.module.base.controller.admin.materialgradeext.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import lombok.Data;
|
||||
|
||||
@Schema(description = "管理后台 - 物料牌号扩展新增/修改 Request VO")
|
||||
@Data
|
||||
public class MaterialGradeExtSaveReqVO {
|
||||
|
||||
@Schema(description = "主键ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "公司编码")
|
||||
@NotEmpty(message = "公司编码不能为空")
|
||||
private String companyCode;
|
||||
|
||||
@Schema(description = "公司名称")
|
||||
private String companyName;
|
||||
|
||||
@Schema(description = "物料编码")
|
||||
@NotEmpty(message = "物料编码不能为空")
|
||||
private String materialCode;
|
||||
|
||||
@Schema(description = "物料名称")
|
||||
private String materialName;
|
||||
|
||||
@Schema(description = "中文牌号")
|
||||
private String chineseBrand;
|
||||
|
||||
@Schema(description = "英文牌号")
|
||||
private String englishBrand;
|
||||
|
||||
@Schema(description = "规格型号")
|
||||
private String specificationModel;
|
||||
|
||||
@Schema(description = "线别(业务字典: material_line_type)")
|
||||
private String lineType;
|
||||
|
||||
@Schema(description = "包装描述")
|
||||
private String packageDesc;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.zt.plat.module.base.dal.dao.materialgradeext;
|
||||
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtPageReqVO;
|
||||
import com.zt.plat.module.base.dal.dataobject.materialgradeext.MaterialGradeExtDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 物料牌号扩展 Mapper
|
||||
*/
|
||||
@Mapper
|
||||
public interface MaterialGradeExtMapper extends BaseMapperX<MaterialGradeExtDO> {
|
||||
|
||||
default PageResult<MaterialGradeExtDO> selectPage(MaterialGradeExtPageReqVO reqVO) {
|
||||
LambdaQueryWrapperX<MaterialGradeExtDO> query = new LambdaQueryWrapperX<MaterialGradeExtDO>()
|
||||
.eqIfPresent(MaterialGradeExtDO::getCompanyCode, reqVO.getCompanyCode())
|
||||
.likeIfPresent(MaterialGradeExtDO::getCompanyName, reqVO.getCompanyName())
|
||||
.eqIfPresent(MaterialGradeExtDO::getMaterialCode, reqVO.getMaterialCode())
|
||||
.likeIfPresent(MaterialGradeExtDO::getMaterialName, reqVO.getMaterialName())
|
||||
.likeIfPresent(MaterialGradeExtDO::getChineseBrand, reqVO.getChineseBrand())
|
||||
.likeIfPresent(MaterialGradeExtDO::getEnglishBrand, reqVO.getEnglishBrand())
|
||||
.likeIfPresent(MaterialGradeExtDO::getSpecificationModel, reqVO.getSpecificationModel())
|
||||
.eqIfPresent(MaterialGradeExtDO::getLineType, reqVO.getLineType())
|
||||
.likeIfPresent(MaterialGradeExtDO::getPackageDesc, reqVO.getPackageDesc())
|
||||
.betweenIfPresent(MaterialGradeExtDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(MaterialGradeExtDO::getId);
|
||||
return selectPage(reqVO, query);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.zt.plat.module.base.dal.dataobject.materialgradeext;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
|
||||
/**
|
||||
* 物料牌号扩展 DO
|
||||
*/
|
||||
@TableName("bse_mtrl_grade_ext")
|
||||
@KeySequence("bse_mtrl_grade_ext_seq")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class MaterialGradeExtDO extends BusinessBaseDO {
|
||||
|
||||
/** 主键 */
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/** 公司编码 */
|
||||
@TableField("CMP_CD")
|
||||
private String companyCode;
|
||||
|
||||
/** 公司名称 */
|
||||
@TableField("CMP_NM")
|
||||
private String companyName;
|
||||
|
||||
/** 物料编码 */
|
||||
@TableField("MTRL_CD")
|
||||
private String materialCode;
|
||||
|
||||
/** 物料名称 */
|
||||
@TableField("MTRL_NM")
|
||||
private String materialName;
|
||||
|
||||
/** 中文牌号 */
|
||||
@TableField("ZH_BRAND")
|
||||
private String chineseBrand;
|
||||
|
||||
/** 英文牌号 */
|
||||
@TableField("EN_BRAND")
|
||||
private String englishBrand;
|
||||
|
||||
/** 规格型号 */
|
||||
@TableField("SPC_MDL")
|
||||
private String specificationModel;
|
||||
|
||||
/** 线别(业务字典:material_line_type) */
|
||||
@TableField("LINE_TP")
|
||||
private String lineType;
|
||||
|
||||
/** 包装描述 */
|
||||
@TableField("PKG")
|
||||
private String packageDesc;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.zt.plat.module.base.service.materialgradeext;
|
||||
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtPageReqVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtRespVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtSaveReqVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface MaterialGradeExtService {
|
||||
|
||||
MaterialGradeExtRespVO create(MaterialGradeExtSaveReqVO reqVO);
|
||||
|
||||
void update(MaterialGradeExtSaveReqVO reqVO);
|
||||
|
||||
void delete(Long id);
|
||||
|
||||
void deleteByIds(List<Long> ids);
|
||||
|
||||
MaterialGradeExtRespVO get(Long id);
|
||||
|
||||
PageResult<MaterialGradeExtRespVO> getPage(MaterialGradeExtPageReqVO pageReqVO);
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
package com.zt.plat.module.base.service.materialgradeext;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtPageReqVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtRespVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtSaveReqVO;
|
||||
import com.zt.plat.module.base.dal.dao.materialgradeext.MaterialGradeExtMapper;
|
||||
import com.zt.plat.module.base.dal.dataobject.materialgradeext.MaterialGradeExtDO;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.zt.plat.module.base.enums.ErrorCodeConstants.MATERIAL_GRADE_EXT_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
* 物料牌号扩展 Service 实现
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class MaterialGradeExtServiceImpl implements MaterialGradeExtService {
|
||||
|
||||
@Resource
|
||||
private MaterialGradeExtMapper materialGradeExtMapper;
|
||||
|
||||
@Override
|
||||
public MaterialGradeExtRespVO create(MaterialGradeExtSaveReqVO reqVO) {
|
||||
MaterialGradeExtDO entity = BeanUtils.toBean(reqVO, MaterialGradeExtDO.class);
|
||||
materialGradeExtMapper.insert(entity);
|
||||
return BeanUtils.toBean(entity, MaterialGradeExtRespVO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(MaterialGradeExtSaveReqVO reqVO) {
|
||||
validateExists(reqVO.getId());
|
||||
MaterialGradeExtDO entity = BeanUtils.toBean(reqVO, MaterialGradeExtDO.class);
|
||||
materialGradeExtMapper.updateById(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(Long id) {
|
||||
validateExists(id);
|
||||
materialGradeExtMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByIds(List<Long> ids) {
|
||||
validateExists(ids);
|
||||
materialGradeExtMapper.deleteBatchIds(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MaterialGradeExtRespVO get(Long id) {
|
||||
MaterialGradeExtDO entity = materialGradeExtMapper.selectById(id);
|
||||
return BeanUtils.toBean(entity, MaterialGradeExtRespVO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<MaterialGradeExtRespVO> getPage(MaterialGradeExtPageReqVO pageReqVO) {
|
||||
PageResult<MaterialGradeExtDO> page = materialGradeExtMapper.selectPage(pageReqVO);
|
||||
if (CollUtil.isEmpty(page.getList())) {
|
||||
return new PageResult<>(Collections.emptyList(), page.getTotal());
|
||||
}
|
||||
List<MaterialGradeExtRespVO> list = BeanUtils.toBean(page.getList(), MaterialGradeExtRespVO.class);
|
||||
return new PageResult<>(list, page.getTotal());
|
||||
}
|
||||
|
||||
private void validateExists(Long id) {
|
||||
if (id == null || materialGradeExtMapper.selectById(id) == null) {
|
||||
throw exception(MATERIAL_GRADE_EXT_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
private void validateExists(List<Long> ids) {
|
||||
if (CollUtil.isEmpty(ids)) {
|
||||
throw exception(MATERIAL_GRADE_EXT_NOT_EXISTS);
|
||||
}
|
||||
Long count = materialGradeExtMapper.selectCount(null);
|
||||
// 快速校验: 逐个检查
|
||||
for (Long id : ids) {
|
||||
validateExists(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
package com.zt.plat.module.base.api.materialgradeext;
|
||||
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.module.base.api.materialgradeext.dto.MaterialGradeExtPageReqDTO;
|
||||
import com.zt.plat.module.base.api.materialgradeext.dto.MaterialGradeExtRespDTO;
|
||||
import com.zt.plat.module.base.api.materialgradeext.dto.MaterialGradeExtSaveReqDTO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtPageReqVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtRespVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtSaveReqVO;
|
||||
import com.zt.plat.module.base.service.materialgradeext.MaterialGradeExtService;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class MaterialGradeExtApiImplTest {
|
||||
|
||||
@InjectMocks
|
||||
private MaterialGradeExtApiImpl api;
|
||||
|
||||
@Mock
|
||||
private MaterialGradeExtService materialGradeExtService;
|
||||
|
||||
private MaterialGradeExtSaveReqDTO buildSaveReqDTO() {
|
||||
MaterialGradeExtSaveReqDTO dto = new MaterialGradeExtSaveReqDTO();
|
||||
dto.setId(1L);
|
||||
dto.setCompanyCode("C001");
|
||||
dto.setCompanyName("公司A");
|
||||
dto.setMaterialCode("M001");
|
||||
dto.setMaterialName("物料A");
|
||||
dto.setChineseBrand("ZH");
|
||||
dto.setEnglishBrand("EN");
|
||||
dto.setSpecificationModel("SPC");
|
||||
dto.setLineType("single");
|
||||
dto.setPackageDesc("箱装");
|
||||
return dto;
|
||||
}
|
||||
|
||||
private MaterialGradeExtRespVO buildRespVO() {
|
||||
MaterialGradeExtRespVO respVO = new MaterialGradeExtRespVO();
|
||||
respVO.setId(11L);
|
||||
respVO.setCompanyCode("C001");
|
||||
respVO.setMaterialCode("M001");
|
||||
respVO.setCreateTime(LocalDateTime.now());
|
||||
return respVO;
|
||||
}
|
||||
|
||||
@Test
|
||||
void create_shouldInvokeServiceAndReturnDto() {
|
||||
MaterialGradeExtSaveReqDTO reqDTO = buildSaveReqDTO();
|
||||
MaterialGradeExtRespVO serviceResp = buildRespVO();
|
||||
when(materialGradeExtService.create(any(MaterialGradeExtSaveReqVO.class))).thenReturn(serviceResp);
|
||||
|
||||
CommonResult<MaterialGradeExtRespDTO> result = api.create(reqDTO);
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
assertThat(result.getData().getId()).isEqualTo(serviceResp.getId());
|
||||
ArgumentCaptor<MaterialGradeExtSaveReqVO> captor = ArgumentCaptor.forClass(MaterialGradeExtSaveReqVO.class);
|
||||
verify(materialGradeExtService).create(captor.capture());
|
||||
assertThat(captor.getValue().getCompanyCode()).isEqualTo("C001");
|
||||
assertThat(captor.getValue().getMaterialCode()).isEqualTo("M001");
|
||||
}
|
||||
|
||||
@Test
|
||||
void update_shouldInvokeService() {
|
||||
MaterialGradeExtSaveReqDTO reqDTO = buildSaveReqDTO();
|
||||
|
||||
CommonResult<Boolean> result = api.update(reqDTO);
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
assertThat(result.getData()).isTrue();
|
||||
ArgumentCaptor<MaterialGradeExtSaveReqVO> captor = ArgumentCaptor.forClass(MaterialGradeExtSaveReqVO.class);
|
||||
verify(materialGradeExtService).update(captor.capture());
|
||||
assertThat(captor.getValue().getCompanyCode()).isEqualTo("C001");
|
||||
}
|
||||
|
||||
@Test
|
||||
void delete_shouldInvokeService() {
|
||||
CommonResult<Boolean> result = api.delete(9L);
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
assertThat(result.getData()).isTrue();
|
||||
verify(materialGradeExtService).delete(9L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void deleteList_shouldInvokeService() {
|
||||
List<Long> ids = List.of(1L, 2L);
|
||||
|
||||
CommonResult<Boolean> result = api.deleteList(ids);
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
assertThat(result.getData()).isTrue();
|
||||
verify(materialGradeExtService).deleteByIds(ids);
|
||||
}
|
||||
|
||||
@Test
|
||||
void get_shouldReturnConvertedDto() {
|
||||
MaterialGradeExtRespVO respVO = buildRespVO();
|
||||
when(materialGradeExtService.get(5L)).thenReturn(respVO);
|
||||
|
||||
CommonResult<MaterialGradeExtRespDTO> result = api.get(5L);
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
assertThat(result.getData().getId()).isEqualTo(respVO.getId());
|
||||
assertThat(result.getData().getCompanyCode()).isEqualTo("C001");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPage_shouldConvertPageResult() {
|
||||
MaterialGradeExtRespVO respVO = buildRespVO();
|
||||
PageResult<MaterialGradeExtRespVO> page = new PageResult<>(List.of(respVO), 1L);
|
||||
when(materialGradeExtService.getPage(any(MaterialGradeExtPageReqVO.class))).thenReturn(page);
|
||||
|
||||
MaterialGradeExtPageReqDTO reqDTO = new MaterialGradeExtPageReqDTO();
|
||||
reqDTO.setCompanyCode("C001");
|
||||
|
||||
CommonResult<PageResult<MaterialGradeExtRespDTO>> result = api.getPage(reqDTO);
|
||||
|
||||
assertThat(result.isSuccess()).isTrue();
|
||||
assertThat(result.getData().getTotal()).isEqualTo(1L);
|
||||
assertThat(result.getData().getList()).hasSize(1);
|
||||
assertThat(result.getData().getList().get(0).getCompanyCode()).isEqualTo("C001");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,185 @@
|
||||
package com.zt.plat.module.base.service.materialgradeext;
|
||||
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.test.core.ut.BaseDbUnitTest;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtPageReqVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtRespVO;
|
||||
import com.zt.plat.module.base.controller.admin.materialgradeext.vo.MaterialGradeExtSaveReqVO;
|
||||
import com.zt.plat.module.base.dal.dao.materialgradeext.MaterialGradeExtMapper;
|
||||
import com.zt.plat.module.base.dal.dataobject.materialgradeext.MaterialGradeExtDO;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static com.zt.plat.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
|
||||
import static com.zt.plat.framework.common.util.date.LocalDateTimeUtils.buildTime;
|
||||
import static com.zt.plat.framework.common.util.object.ObjectUtils.cloneIgnoreId;
|
||||
import static com.zt.plat.framework.test.core.util.AssertUtils.assertPojoEquals;
|
||||
import static com.zt.plat.framework.test.core.util.AssertUtils.assertServiceException;
|
||||
import static com.zt.plat.framework.test.core.util.RandomUtils.randomPojo;
|
||||
import static com.zt.plat.framework.test.core.util.RandomUtils.randomLongId;
|
||||
import static com.zt.plat.module.base.enums.ErrorCodeConstants.MATERIAL_GRADE_EXT_NOT_EXISTS;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@Import(MaterialGradeExtServiceImpl.class)
|
||||
class MaterialGradeExtServiceImplTest extends BaseDbUnitTest {
|
||||
|
||||
@Resource
|
||||
private MaterialGradeExtServiceImpl materialGradeExtService;
|
||||
|
||||
@Resource
|
||||
private MaterialGradeExtMapper materialGradeExtMapper;
|
||||
|
||||
private MaterialGradeExtSaveReqVO buildSaveReqVO(Long id) {
|
||||
MaterialGradeExtSaveReqVO reqVO = randomPojo(MaterialGradeExtSaveReqVO.class, o -> {
|
||||
o.setId(id);
|
||||
o.setCompanyCode("C001");
|
||||
o.setCompanyName("公司A");
|
||||
o.setMaterialCode("M001");
|
||||
o.setMaterialName("物料A");
|
||||
o.setChineseBrand("中文牌号");
|
||||
o.setEnglishBrand("EN-BRAND");
|
||||
o.setSpecificationModel("SPC-1");
|
||||
o.setLineType("single");
|
||||
o.setPackageDesc("箱装");
|
||||
});
|
||||
return reqVO;
|
||||
}
|
||||
|
||||
@Test
|
||||
void create_success() {
|
||||
MaterialGradeExtSaveReqVO reqVO = buildSaveReqVO(null);
|
||||
|
||||
MaterialGradeExtRespVO respVO = materialGradeExtService.create(reqVO);
|
||||
|
||||
assertNotNull(respVO.getId());
|
||||
MaterialGradeExtDO db = materialGradeExtMapper.selectById(respVO.getId());
|
||||
assertPojoEquals(reqVO, db, "id", "createTime", "updateTime", "creator", "updater", "deleted",
|
||||
"tenantId", "deptId", "deptName", "companyId", "creatorName", "updaterName", "postId");
|
||||
}
|
||||
|
||||
@Test
|
||||
void update_success() {
|
||||
MaterialGradeExtDO db = randomPojo(MaterialGradeExtDO.class, o -> {
|
||||
o.setCompanyCode("C001");
|
||||
o.setMaterialCode("M001");
|
||||
o.setCreateTime(LocalDateTime.now());
|
||||
});
|
||||
materialGradeExtMapper.insert(db);
|
||||
|
||||
MaterialGradeExtSaveReqVO reqVO = buildSaveReqVO(db.getId());
|
||||
reqVO.setCompanyCode("C002");
|
||||
reqVO.setMaterialCode("M002");
|
||||
reqVO.setLineType("double");
|
||||
|
||||
materialGradeExtService.update(reqVO);
|
||||
|
||||
MaterialGradeExtDO updated = materialGradeExtMapper.selectById(db.getId());
|
||||
assertPojoEquals(reqVO, updated, "createTime", "updateTime", "creator", "updater", "deleted",
|
||||
"tenantId", "deptId", "deptName", "companyId", "creatorName", "updaterName", "postId");
|
||||
}
|
||||
|
||||
@Test
|
||||
void update_notExists() {
|
||||
MaterialGradeExtSaveReqVO reqVO = buildSaveReqVO(randomLongId());
|
||||
|
||||
assertServiceException(() -> materialGradeExtService.update(reqVO), MATERIAL_GRADE_EXT_NOT_EXISTS);
|
||||
}
|
||||
|
||||
@Test
|
||||
void delete_success() {
|
||||
MaterialGradeExtDO db = randomPojo(MaterialGradeExtDO.class, o -> {
|
||||
o.setCompanyCode("C001");
|
||||
o.setMaterialCode("M001");
|
||||
});
|
||||
materialGradeExtMapper.insert(db);
|
||||
|
||||
materialGradeExtService.delete(db.getId());
|
||||
|
||||
assertNull(materialGradeExtMapper.selectById(db.getId()));
|
||||
}
|
||||
|
||||
@Test
|
||||
void delete_notExists() {
|
||||
assertServiceException(() -> materialGradeExtService.delete(randomLongId()), MATERIAL_GRADE_EXT_NOT_EXISTS);
|
||||
}
|
||||
|
||||
@Test
|
||||
void deleteByIds_success() {
|
||||
MaterialGradeExtDO db1 = randomPojo(MaterialGradeExtDO.class, o -> {
|
||||
o.setCompanyCode("C001");
|
||||
o.setMaterialCode("M001");
|
||||
});
|
||||
MaterialGradeExtDO db2 = randomPojo(MaterialGradeExtDO.class, o -> {
|
||||
o.setCompanyCode("C002");
|
||||
o.setMaterialCode("M002");
|
||||
});
|
||||
materialGradeExtMapper.insert(db1);
|
||||
materialGradeExtMapper.insert(db2);
|
||||
|
||||
materialGradeExtService.deleteByIds(Arrays.asList(db1.getId(), db2.getId()));
|
||||
|
||||
assertNull(materialGradeExtMapper.selectById(db1.getId()));
|
||||
assertNull(materialGradeExtMapper.selectById(db2.getId()));
|
||||
}
|
||||
|
||||
@Test
|
||||
void get_success() {
|
||||
MaterialGradeExtDO db = randomPojo(MaterialGradeExtDO.class, o -> {
|
||||
o.setCompanyCode("C001");
|
||||
o.setMaterialCode("M001");
|
||||
});
|
||||
materialGradeExtMapper.insert(db);
|
||||
|
||||
MaterialGradeExtRespVO result = materialGradeExtService.get(db.getId());
|
||||
|
||||
assertPojoEquals(db, result, "createTime", "updateTime", "creator", "updater", "deleted",
|
||||
"tenantId", "deptId", "deptName", "companyId", "creatorName", "updaterName", "postId");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPage_filterSuccess() {
|
||||
MaterialGradeExtDO target = randomPojo(MaterialGradeExtDO.class, o -> {
|
||||
o.setCompanyCode("C001");
|
||||
o.setCompanyName("公司A");
|
||||
o.setMaterialCode("M001");
|
||||
o.setMaterialName("物料A");
|
||||
o.setChineseBrand("ZH");
|
||||
o.setEnglishBrand("EN");
|
||||
o.setSpecificationModel("SPC");
|
||||
o.setLineType("single");
|
||||
o.setPackageDesc("包装A");
|
||||
o.setCreateTime(buildTime(2024, 1, 2));
|
||||
});
|
||||
materialGradeExtMapper.insert(target);
|
||||
|
||||
materialGradeExtMapper.insert(cloneIgnoreId(target, o -> o.setCompanyCode("X")));
|
||||
materialGradeExtMapper.insert(cloneIgnoreId(target, o -> o.setMaterialCode("Y")));
|
||||
materialGradeExtMapper.insert(cloneIgnoreId(target, o -> o.setChineseBrand("不同")));
|
||||
materialGradeExtMapper.insert(cloneIgnoreId(target, o -> o.setLineType("double")));
|
||||
materialGradeExtMapper.insert(cloneIgnoreId(target, o -> o.setCreateTime(buildTime(2024, 2, 2))));
|
||||
|
||||
MaterialGradeExtPageReqVO pageReqVO = new MaterialGradeExtPageReqVO();
|
||||
pageReqVO.setCompanyCode("C001");
|
||||
pageReqVO.setCompanyName("公司");
|
||||
pageReqVO.setMaterialCode("M001");
|
||||
pageReqVO.setMaterialName("物料");
|
||||
pageReqVO.setChineseBrand("ZH");
|
||||
pageReqVO.setEnglishBrand("EN");
|
||||
pageReqVO.setSpecificationModel("SPC");
|
||||
pageReqVO.setLineType("single");
|
||||
pageReqVO.setPackageDesc("包装");
|
||||
pageReqVO.setCreateTime(buildBetweenTime(2024, 1, 1, 2024, 1, 3));
|
||||
|
||||
PageResult<MaterialGradeExtRespVO> pageResult = materialGradeExtService.getPage(pageReqVO);
|
||||
|
||||
assertEquals(1, pageResult.getTotal());
|
||||
assertEquals(1, pageResult.getList().size());
|
||||
assertPojoEquals(target, pageResult.getList().get(0), "createTime", "updateTime", "creator", "updater", "deleted",
|
||||
"tenantId", "deptId", "deptName", "companyId", "creatorName", "updaterName", "postId");
|
||||
}
|
||||
}
|
||||
@@ -1 +1,2 @@
|
||||
TRUNCATE TABLE bse_mtrl_hs_prps;
|
||||
TRUNCATE TABLE bse_mtrl_grade_ext;
|
||||
|
||||
@@ -14,3 +14,29 @@ CREATE TABLE IF NOT EXISTS bse_mtrl_hs_prps (
|
||||
deleted BIT DEFAULT FALSE NOT NULL,
|
||||
tenant_id BIGINT DEFAULT 1 NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS bse_mtrl_grade_ext (
|
||||
id BIGINT PRIMARY KEY,
|
||||
CMP_CD VARCHAR(64) NOT NULL,
|
||||
CMP_NM VARCHAR(128),
|
||||
MTRL_CD VARCHAR(128) NOT NULL,
|
||||
MTRL_NM VARCHAR(255),
|
||||
ZH_BRAND VARCHAR(255),
|
||||
EN_BRAND VARCHAR(255),
|
||||
SPC_MDL VARCHAR(255),
|
||||
LINE_TP VARCHAR(64),
|
||||
PKG VARCHAR(255),
|
||||
company_id BIGINT,
|
||||
company_name VARCHAR(128),
|
||||
dept_id BIGINT,
|
||||
dept_name VARCHAR(128),
|
||||
post_id BIGINT,
|
||||
tenant_id BIGINT DEFAULT 1,
|
||||
creator_name VARCHAR(64),
|
||||
updater_name VARCHAR(64),
|
||||
creator VARCHAR(64),
|
||||
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
updater VARCHAR(64),
|
||||
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||
deleted BIT DEFAULT FALSE NOT NULL
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user