feat(material): 新增物料及齐套管理相关功能
- 新增BomControllerService实现齐套物料增删改查及Excel导入导出功能 - 新增BomMaterialService对接主物料系统进行物料信息查询和登录鉴权 - 新增MaterialController及MaterialControllerService实现图纸管理接口和服务 - 实现物料图片和zip批量上传功能,支持权限校验和异步任务提交 - 支持物料分类查询、历史版本查询及物料列表导出功能 - 优化导入数据校验逻辑,导入失败时导出错误结果文件 - 统一接口返回ApiResult封装并支持分页查询展示 - 引入PowerJob任务调度集成,支持图纸zip导入异步处理 - 代码结构调整,规范命名及异常处理逻辑
This commit is contained in:
parent
d6d759ef19
commit
e3e8dc3a25
|
|
@ -3,7 +3,7 @@ package com.nflg.qms.admin.controller;
|
|||
import com.nflg.qms.admin.service.QmsQcMaterialControllerService;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.dto.BomMaterialDTO;
|
||||
import com.nflg.wms.common.pojo.dto.MaterialMainDTO;
|
||||
import com.nflg.wms.common.pojo.qo.BomMaterialListQO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsQcMaterialAddQO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsQcMaterialSearchQO;
|
||||
|
|
@ -15,11 +15,7 @@ import jakarta.servlet.http.HttpServletResponse;
|
|||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
|
|
@ -98,7 +94,7 @@ public class QmsQcMaterialController extends BaseController {
|
|||
* 搜索主物料系统物料信息
|
||||
*/
|
||||
@PostMapping("searchBomMaterial")
|
||||
public ApiResult<PageData<BomMaterialDTO>> searchBomMaterial(@Valid @RequestBody BomMaterialListQO request){
|
||||
public ApiResult<PageData<MaterialMainDTO>> searchBomMaterial(@Valid @RequestBody BomMaterialListQO request){
|
||||
return ApiResult.success(qcMaterialControllerService.searchBomMaterial(request));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ import com.nflg.wms.common.constant.STATE;
|
|||
import com.nflg.wms.common.exception.NflgException;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.dto.BomMaterialDTO;
|
||||
import com.nflg.wms.common.pojo.dto.BomPageResultDTO;
|
||||
import com.nflg.wms.common.pojo.dto.MaterialMainDTO;
|
||||
import com.nflg.wms.common.pojo.dto.QmsQcMaterialImportDTO;
|
||||
import com.nflg.wms.common.pojo.qo.BomMaterialListQO;
|
||||
import com.nflg.wms.common.pojo.qo.QmsQcMaterialAddQO;
|
||||
|
|
@ -433,9 +433,9 @@ public class QmsQcMaterialControllerService {
|
|||
return pathName.toString();
|
||||
}
|
||||
|
||||
public PageData<BomMaterialDTO> searchBomMaterial(@Valid BomMaterialListQO request) {
|
||||
BomPageResultDTO<BomMaterialDTO> bomPageResultDTO = bomMaterialService.searchMaterial(request);
|
||||
return new PageData<BomMaterialDTO>()
|
||||
public PageData<MaterialMainDTO> searchBomMaterial(@Valid BomMaterialListQO request) {
|
||||
BomPageResultDTO<MaterialMainDTO> bomPageResultDTO = bomMaterialService.searchMaterial(request);
|
||||
return new PageData<MaterialMainDTO>()
|
||||
.setPage(request.getPage())
|
||||
.setPageSize(request.getPageSize())
|
||||
.setTotal((int) bomPageResultDTO.getTotal())
|
||||
|
|
|
|||
|
|
@ -4,14 +4,13 @@ import com.nflg.wms.admin.service.MaterialControllerService;
|
|||
import com.nflg.wms.common.constant.UserType;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.dto.BomMaterialDTO;
|
||||
import com.nflg.wms.common.pojo.dto.MaterialCategoryVO;
|
||||
import com.nflg.wms.common.pojo.dto.MaterialMainDTO;
|
||||
import com.nflg.wms.common.pojo.qo.*;
|
||||
import com.nflg.wms.common.pojo.vo.EbomParentVO;
|
||||
import com.nflg.wms.common.pojo.vo.MaterialVO;
|
||||
import com.nflg.wms.common.pojo.vo.QueryMaterialsVO;
|
||||
import com.nflg.wms.common.util.UserUtil;
|
||||
import com.nflg.wms.repository.entity.WmsMaterial;
|
||||
import com.nflg.wms.starter.BaseController;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
|
@ -155,7 +154,7 @@ public class MaterialController extends BaseController {
|
|||
* 搜索主物料系统物料信息
|
||||
*/
|
||||
@PostMapping("searchBomMaterial")
|
||||
public ApiResult<PageData<BomMaterialDTO>> searchBomMaterial(@Valid @RequestBody BomMaterialListQO request){
|
||||
public ApiResult<PageData<MaterialMainDTO>> searchBomMaterial(@Valid @RequestBody BomMaterialListQO request){
|
||||
return ApiResult.success(materialControllerService.searchBomMaterial(request));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.nflg.wms.common.pojo.PageData;
|
|||
import com.nflg.wms.common.pojo.dto.BomExportExcelDTO;
|
||||
import com.nflg.wms.common.pojo.dto.BomImportExcelDTO;
|
||||
import com.nflg.wms.common.pojo.dto.BomMaterialDTO;
|
||||
import com.nflg.wms.common.pojo.dto.MaterialMainDTO;
|
||||
import com.nflg.wms.common.pojo.qo.BomSearchQO;
|
||||
import com.nflg.wms.common.pojo.qo.BomUpdateQO;
|
||||
import com.nflg.wms.common.pojo.qo.ScanTypeUpdateQO;
|
||||
|
|
@ -139,7 +140,7 @@ public class BomControllerService {
|
|||
if (Objects.isNull(dto.getParentNo())) {
|
||||
sb.append("父级物料编号不能为空;");
|
||||
} else {
|
||||
BomMaterialDTO pm = bomMaterialService.getMaterialInfo(dto.getParentNo());
|
||||
MaterialMainDTO pm = bomMaterialService.getMaterialInfo(dto.getParentNo());
|
||||
if (Objects.isNull(pm)) {
|
||||
sb.append("父级物料编号无效");
|
||||
} else {
|
||||
|
|
@ -168,7 +169,7 @@ public class BomControllerService {
|
|||
if (StrUtil.isBlank(dto.getChildNo())) {
|
||||
sb.append("子级物料编号不能为空;");
|
||||
} else {
|
||||
BomMaterialDTO cm = bomMaterialService.getMaterialInfo(dto.getChildNo());
|
||||
MaterialMainDTO cm = bomMaterialService.getMaterialInfo(dto.getChildNo());
|
||||
if (Objects.isNull(cm)) {
|
||||
sb.append("子级物料编号无效;");
|
||||
} else if (bom.getParentId() != 0L) {
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ import tech.powerjob.common.request.query.JobInfoQuery;
|
|||
import tech.powerjob.common.response.JobInfoDTO;
|
||||
import tech.powerjob.common.response.ResultDTO;
|
||||
|
||||
import javax.print.attribute.standard.PrinterURI;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
|
|
@ -166,7 +165,7 @@ public class MaterialControllerService {
|
|||
for (MultipartFile file : files) {
|
||||
String name = file.getOriginalFilename();
|
||||
String materialNo = name.substring(0, name.lastIndexOf("."));
|
||||
BomMaterialDTO bomMaterialDTO = bomMaterialService.getMaterialInfo(materialNo);
|
||||
MaterialMainDTO bomMaterialDTO = bomMaterialService.getMaterialInfo(materialNo);
|
||||
if (Objects.isNull(bomMaterialDTO)) {
|
||||
pics.add(name);
|
||||
} else {
|
||||
|
|
@ -225,9 +224,9 @@ public class MaterialControllerService {
|
|||
}
|
||||
}
|
||||
|
||||
public PageData<BomMaterialDTO> searchBomMaterial(@Valid BomMaterialListQO request) {
|
||||
BomPageResultDTO<BomMaterialDTO> bomPageResultDTO = bomMaterialService.searchMaterial(request);
|
||||
return new PageData<BomMaterialDTO>()
|
||||
public PageData<MaterialMainDTO> searchBomMaterial(@Valid BomMaterialListQO request) {
|
||||
BomPageResultDTO<MaterialMainDTO> bomPageResultDTO = bomMaterialService.searchMaterial(request);
|
||||
return new PageData<MaterialMainDTO>()
|
||||
.setPage(request.getPage())
|
||||
.setPageSize(request.getPageSize())
|
||||
.setTotal((int) bomPageResultDTO.getTotal())
|
||||
|
|
|
|||
|
|
@ -4,12 +4,11 @@ import cn.hutool.core.collection.CollectionUtil;
|
|||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.nflg.wms.common.constant.Constant;
|
||||
import com.nflg.wms.common.constant.STATE;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.common.pojo.dto.BomMaterialDTO;
|
||||
import com.nflg.wms.common.pojo.dto.MaterialMainDTO;
|
||||
import com.nflg.wms.common.pojo.dto.StorageExcelExportDTO;
|
||||
import com.nflg.wms.common.pojo.dto.StorageExcelImportDTO;
|
||||
import com.nflg.wms.common.pojo.qo.EnableQO;
|
||||
|
|
@ -21,8 +20,14 @@ import com.nflg.wms.common.util.DateTimeUtil;
|
|||
import com.nflg.wms.common.util.EecExcelUtil;
|
||||
import com.nflg.wms.common.util.UserUtil;
|
||||
import com.nflg.wms.common.util.VUtil;
|
||||
import com.nflg.wms.repository.entity.*;
|
||||
import com.nflg.wms.repository.service.*;
|
||||
import com.nflg.wms.repository.entity.DictionaryItem;
|
||||
import com.nflg.wms.repository.entity.WmsBin;
|
||||
import com.nflg.wms.repository.entity.WmsStorage;
|
||||
import com.nflg.wms.repository.entity.WmsWarehouse;
|
||||
import com.nflg.wms.repository.service.IDictionaryItemService;
|
||||
import com.nflg.wms.repository.service.IWmsBinService;
|
||||
import com.nflg.wms.repository.service.IWmsStorageService;
|
||||
import com.nflg.wms.repository.service.IWmsWarehouseService;
|
||||
import com.nflg.wms.starter.service.BomMaterialService;
|
||||
import com.nflg.wms.starter.service.FileUploadService;
|
||||
import jakarta.annotation.Resource;
|
||||
|
|
@ -146,7 +151,7 @@ public class StorageControllerService {
|
|||
if (StrUtil.isBlank(dto.getMaterialNo())) {
|
||||
sb.append("物料编号不能为空;");
|
||||
} else {
|
||||
BomMaterialDTO material = bomMaterialService.getMaterialInfo(dto.getMaterialNo());
|
||||
MaterialMainDTO material = bomMaterialService.getMaterialInfo(dto.getMaterialNo());
|
||||
if (Objects.isNull(material)) {
|
||||
sb.append("物料编号无效;");
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -2,30 +2,32 @@ package com.nflg.wms.admin.service;
|
|||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.lang.Pair;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.nflg.wms.admin.pojo.dto.PdfPageDTO;
|
||||
import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO;
|
||||
import com.nflg.wms.admin.pojo.dto.ZWM3A17Item1DTO;
|
||||
import com.nflg.wms.admin.util.PdfGeneratorUtil;
|
||||
import com.nflg.wms.admin.util.QRCodeUtil;
|
||||
import com.nflg.wms.admin.util.ThymeleafUtil;
|
||||
import com.nflg.wms.common.constant.Constant;
|
||||
import com.nflg.wms.common.constant.STATE;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.dto.*;
|
||||
import com.nflg.wms.common.pojo.dto.MaterialMainDTO;
|
||||
import com.nflg.wms.common.pojo.dto.PackageMaterialDTO;
|
||||
import com.nflg.wms.common.pojo.dto.PackageMaterialExcelExportDTO;
|
||||
import com.nflg.wms.common.pojo.dto.PackageMaterialExcelImportDTO;
|
||||
import com.nflg.wms.common.pojo.qo.*;
|
||||
import com.nflg.wms.common.pojo.vo.PackageVO;
|
||||
import com.nflg.wms.common.util.DateTimeUtil;
|
||||
import com.nflg.wms.common.util.EecExcelUtil;
|
||||
import com.nflg.wms.common.util.UserUtil;
|
||||
import com.nflg.wms.common.util.VUtil;
|
||||
import com.nflg.wms.repository.entity.*;
|
||||
import com.nflg.wms.repository.entity.WmsInTaskItem;
|
||||
import com.nflg.wms.repository.entity.WmsMaterial;
|
||||
import com.nflg.wms.repository.entity.WmsModel;
|
||||
import com.nflg.wms.repository.entity.WmsStructuralPackage;
|
||||
import com.nflg.wms.repository.service.*;
|
||||
import com.nflg.wms.starter.service.BomMaterialService;
|
||||
import com.nflg.wms.starter.service.FileUploadService;
|
||||
|
|
@ -312,7 +314,7 @@ public class StructuralPackageControllerService {
|
|||
case 2:
|
||||
String no = row.getString(1);
|
||||
VUtil.trueThrowBusinessError(StrUtil.isBlank(no)).throwMessage("钢构包编码不能为空");
|
||||
BomMaterialDTO material = bomMaterialService.getMaterialInfo(no);
|
||||
MaterialMainDTO material = bomMaterialService.getMaterialInfo(no);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(material)).throwMessage("钢构包编码无效");
|
||||
packageInfo.setNo(no);
|
||||
packageInfo.setName(material.getMaterialDesc());
|
||||
|
|
|
|||
|
|
@ -0,0 +1,54 @@
|
|||
package com.nflg.wms.common.pojo.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class MaterialMainDTO {
|
||||
|
||||
private Long rowId;
|
||||
|
||||
private String materialNo;
|
||||
|
||||
private String materialName;
|
||||
|
||||
private String materialDesc;
|
||||
|
||||
private String materialDescEn;
|
||||
|
||||
private String drawingNo;
|
||||
|
||||
/**
|
||||
* 物料单位
|
||||
*/
|
||||
private String materialUnit;
|
||||
|
||||
/**
|
||||
* 物料状态 1:激活 2:禁止采购 3:售后专用 4:冻结 5:完全弃用
|
||||
*/
|
||||
private Integer materialState;
|
||||
|
||||
/**
|
||||
* 一级分类编号
|
||||
*/
|
||||
private String firstMaterialCategoryCode;
|
||||
|
||||
/**
|
||||
* 二级分类编号
|
||||
*/
|
||||
private String secondMaterialCategoryCode;
|
||||
|
||||
/**
|
||||
* 三级分类编号
|
||||
*/
|
||||
private String thirdMaterialCategoryCode;
|
||||
|
||||
/**
|
||||
* 大类/中类/小类/细分类
|
||||
*/
|
||||
private String oldCategoryNameTree;
|
||||
|
||||
/**
|
||||
* 物料规格
|
||||
*/
|
||||
private String materialSpecifications;
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@ import lombok.NoArgsConstructor;
|
|||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class BomMaterialListQO extends PageQO{
|
||||
public class BomMaterialListQO extends PageQO {
|
||||
|
||||
/**
|
||||
* 物料编号
|
||||
|
|
@ -22,10 +22,10 @@ public class BomMaterialListQO extends PageQO{
|
|||
/**
|
||||
* 物料分类,不需要设置
|
||||
*/
|
||||
private int materialClass=0;
|
||||
private int materialClass = 0;
|
||||
|
||||
/**
|
||||
* 物料一级分类编码
|
||||
* 分类编码
|
||||
*/
|
||||
private String firstMaterialCategoryCode;
|
||||
private String materialCategoryCode;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import cn.hutool.core.util.IdUtil;
|
|||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.nflg.wms.common.constant.UserType;
|
||||
import com.nflg.wms.common.pojo.dto.BomMaterialDTO;
|
||||
import com.nflg.wms.common.pojo.dto.MaterialMainDTO;
|
||||
import com.nflg.wms.repository.entity.WmsMaterial;
|
||||
import com.nflg.wms.repository.service.IWmsMaterialService;
|
||||
import com.nflg.wms.starter.service.BomMaterialService;
|
||||
|
|
@ -27,7 +27,6 @@ import java.time.LocalDateTime;
|
|||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
|
||||
|
|
@ -69,7 +68,7 @@ public class MaterialZipImportProcessor implements BasicProcessor {
|
|||
}
|
||||
String materialNo = name.substring(0, name.lastIndexOf("."));
|
||||
omsLogger.info("物料编号:{}", materialNo);
|
||||
BomMaterialDTO bomMaterialDTO = bomMaterialService.getMaterialInfo(materialNo);
|
||||
MaterialMainDTO bomMaterialDTO = bomMaterialService.getMaterialInfo(materialNo);
|
||||
if (Objects.isNull(bomMaterialDTO)) {
|
||||
omsLogger.error("主数据中未查找到该物料:{}", materialNo);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -106,13 +106,13 @@ public class BomMaterialService {
|
|||
return Optional.ofNullable(resultDTO.getData()).orElse(Collections.emptyList());
|
||||
}
|
||||
|
||||
public BomMaterialDTO getMaterialInfo(String no) {
|
||||
public MaterialMainDTO getMaterialInfo(String no) {
|
||||
VUtil.trueThrowBusinessError(StrUtil.isBlank(no)).throwMessage("物料编号不能为空");
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
headers.add("authorization", getToken());
|
||||
HttpEntity<Void> requestEntity = new HttpEntity<>(null, headers);
|
||||
ResponseEntity<BomResultDTO<BomMaterialDTO>> response = restTemplate.exchange(
|
||||
ResponseEntity<BomResultDTO<MaterialMainDTO>> response = restTemplate.exchange(
|
||||
baseUrl + materialInfoUrl + no,
|
||||
HttpMethod.GET,
|
||||
requestEntity,
|
||||
|
|
@ -122,29 +122,32 @@ public class BomMaterialService {
|
|||
log.info("查询主物料系统返回状态码:" + response.getStatusCode().value());
|
||||
VUtil.trueThrowBusinessError(!response.getStatusCode().is2xxSuccessful())
|
||||
.throwMessage("查询主物料系统失败");
|
||||
BomResultDTO<BomMaterialDTO> resultDTO = response.getBody();
|
||||
BomResultDTO<MaterialMainDTO> resultDTO = response.getBody();
|
||||
log.info("查询主物料系统返回数据:" + JSONUtil.toJsonStr(resultDTO));
|
||||
return resultDTO.getData();
|
||||
}
|
||||
|
||||
public BomPageResultDTO<BomMaterialDTO> searchMaterial(BomMaterialListQO qo) {
|
||||
public BomPageResultDTO<MaterialMainDTO> searchMaterial(BomMaterialListQO qo) {
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
headers.add("authorization", getToken());
|
||||
HttpEntity<BomMaterialListQO> requestEntity = new HttpEntity<>(qo, headers);
|
||||
ResponseEntity<BomResultDTO<BomPageResultDTO<BomMaterialDTO>>> response = restTemplate.exchange(
|
||||
ResponseEntity<BomResultDTO<BomPageResultDTO<MaterialMainDTO>>> response = restTemplate.exchange(
|
||||
baseUrl + materialSearchUrl,
|
||||
HttpMethod.POST,
|
||||
requestEntity,
|
||||
new ParameterizedTypeReference<>() {
|
||||
}
|
||||
);
|
||||
// ResponseEntity<String> responseEntity=restTemplate.postForEntity(baseUrl + materialSearchUrl, requestEntity, String.class);
|
||||
log.info("查询主物料系统返回状态码:" + response.getStatusCode().value());
|
||||
VUtil.trueThrowBusinessError(!response.getStatusCode().is2xxSuccessful())
|
||||
.throwMessage("查询主物料系统失败");
|
||||
BomResultDTO<BomPageResultDTO<BomMaterialDTO>> resultDTO = response.getBody();
|
||||
BomResultDTO<BomPageResultDTO<MaterialMainDTO>> resultDTO = response.getBody();
|
||||
log.info("查询主物料系统返回数据:" + JSONUtil.toJsonStr(resultDTO));
|
||||
return resultDTO.getData();
|
||||
// log.info("查询主物料系统返回数据:" +responseEntity.getBody());
|
||||
// return new BomPageResultDTO();
|
||||
}
|
||||
|
||||
private String getToken() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue