物料相关

This commit is contained in:
潘荣晟
2026-01-21 18:20:32 +08:00
parent 8bb76b85ab
commit d71300ee7f
5 changed files with 54 additions and 35 deletions

View File

@@ -148,8 +148,8 @@ public class ErpMaterialController implements BusinessControllerMarker {
@GetMapping("/getErpMaterialByMainMaterialById") @GetMapping("/getErpMaterialByMainMaterialById")
@Operation(summary = "通过主物料查询子物料信息") @Operation(summary = "通过主物料查询子物料信息")
@PreAuthorize("@ss.hasAnyPermissions({'sply:erp-material:query','basic:material-config:query'})") @PreAuthorize("@ss.hasAnyPermissions({'sply:erp-material:query','basic:material-config:query'})")
public CommonResult<List<ErpMaterialRespVO>> getErpMaterialByMainMaterial(@RequestParam("id") Long mainMaterialId) { public CommonResult<List<ErpMaterialRespVO>> getErpMaterialByMainMaterial(@RequestParam("id") Long mainMaterialId, @RequestParam(value = "deptId",required = false) String companyCode) {
List<ErpMaterialRespVO> erpMaterial = erpMaterialService.getErpMaterialByMainMaterial(mainMaterialId); List<ErpMaterialRespVO> erpMaterial = erpMaterialService.getErpMaterialByMainMaterial(mainMaterialId, companyCode);
return success(BeanUtils.toBean(erpMaterial, ErpMaterialRespVO.class)); return success(BeanUtils.toBean(erpMaterial, ErpMaterialRespVO.class));
} }

View File

@@ -17,9 +17,9 @@ public interface ErpErpMaterialCorrService {
List<ErpMaterialCorrRspVO> create(@Valid ErpMaterialCorrSaveReqVO reqVO); List<ErpMaterialCorrRspVO> create(@Valid ErpMaterialCorrSaveReqVO reqVO);
void deleteBatch(DeleteErpMaterialCorrVO reqVO); void deleteBatch(DeleteErpMaterialCorrVO reqVO);
List<ErpMaterialCorrRspVO> getErpMaterialByMainMaterial(List<Long> mainMaterialIds); List<ErpMaterialCorrRspVO> getErpMaterialByMainMaterial(List<Long> mainMaterialIds, String companyCode);
List<ErpMaterialCorrRspVO> getErpMaterialByMainMaterialByCode(String code); List<ErpMaterialCorrRspVO> getErpMaterialByMainMaterialByCode(String code,String companyCode);
List<ErpMaterialCorrRspVO> getErpMaterialByCompanyCode(String CompanyCode); List<ErpMaterialCorrRspVO> getErpMaterialByCompanyCode(String CompanyCode);
} }

View File

@@ -48,13 +48,19 @@ public class ErpErpMaterialCorrServiceImpl implements ErpErpMaterialCorrService{
} }
@Override @Override
public List<ErpMaterialCorrRspVO> getErpMaterialByMainMaterial(List<Long> mainMaterialIds) { public List<ErpMaterialCorrRspVO> getErpMaterialByMainMaterial(List<Long> mainMaterialIds, String companyCode) {
return BeanUtils.toBean( erpErpMaterialCorrMapper.selectList(ErpMaterialCorrDO::getMaterialParentId, mainMaterialIds), ErpMaterialCorrRspVO.class); LambdaQueryWrapperX<ErpMaterialCorrDO> erpMaterialCorrDOLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
erpMaterialCorrDOLambdaQueryWrapperX.eq(ErpMaterialCorrDO::getMaterialParentId, mainMaterialIds);
erpMaterialCorrDOLambdaQueryWrapperX.eqIfPresent(ErpMaterialCorrDO::getCompanyCode, companyCode);
return BeanUtils.toBean( erpErpMaterialCorrMapper.selectList(erpMaterialCorrDOLambdaQueryWrapperX), ErpMaterialCorrRspVO.class);
} }
@Override @Override
public List<ErpMaterialCorrRspVO> getErpMaterialByMainMaterialByCode(String code) { public List<ErpMaterialCorrRspVO> getErpMaterialByMainMaterialByCode(String code, String companyCode) {
return BeanUtils.toBean(erpErpMaterialCorrMapper.selectList(ErpMaterialCorrDO::getMaterialParentCode, code), ErpMaterialCorrRspVO.class); LambdaQueryWrapperX<ErpMaterialCorrDO> erpMaterialCorrDOLambdaQueryWrapperX = new LambdaQueryWrapperX<>();
erpMaterialCorrDOLambdaQueryWrapperX.eq(ErpMaterialCorrDO::getMaterialParentCode, code);
erpMaterialCorrDOLambdaQueryWrapperX.eqIfPresent(ErpMaterialCorrDO::getCompanyCode, companyCode);
return BeanUtils.toBean(erpErpMaterialCorrMapper.selectList(erpMaterialCorrDOLambdaQueryWrapperX), ErpMaterialCorrRspVO.class);
} }
@Override @Override

View File

@@ -75,7 +75,7 @@ public interface ErpMaterialService {
ErpMaterialDO getErpMaterialById(Long id); ErpMaterialDO getErpMaterialById(Long id);
List<ErpMaterialRespVO> getErpMaterialByMainMaterial(Long mainMaterialId); List<ErpMaterialRespVO> getErpMaterialByMainMaterial(Long mainMaterialId, String companyCode);
PageResult<ErpMaterialDO> getErpMaterialByApi( MaterialInfomationApiVO vo); PageResult<ErpMaterialDO> getErpMaterialByApi( MaterialInfomationApiVO vo);

View File

@@ -272,8 +272,8 @@ public class ErpMaterialServiceImpl implements ErpMaterialService {
} }
@Override @Override
public List<ErpMaterialRespVO> getErpMaterialByMainMaterial(Long mainMaterial) { public List<ErpMaterialRespVO> getErpMaterialByMainMaterial(Long mainMaterial, String companyCode) {
List<ErpMaterialCorrRspVO> erpMaterialByMainMaterial = erpMaterialCorrService.getErpMaterialByMainMaterial(List.of(mainMaterial)); List<ErpMaterialCorrRspVO> erpMaterialByMainMaterial = erpMaterialCorrService.getErpMaterialByMainMaterial(List.of(mainMaterial), companyCode);
List<ErpMaterialDO> erpMaterialDOList = new ArrayList<>(); List<ErpMaterialDO> erpMaterialDOList = new ArrayList<>();
List<ErpMaterialRespVO> erpMaterialRespVOS = new ArrayList<>(); List<ErpMaterialRespVO> erpMaterialRespVOS = new ArrayList<>();
if (erpMaterialByMainMaterial.isEmpty()) { if (erpMaterialByMainMaterial.isEmpty()) {
@@ -300,15 +300,11 @@ public class ErpMaterialServiceImpl implements ErpMaterialService {
@Override @Override
public PageResult<ErpMaterialDO> getErpMaterialByApi(MaterialInfomationApiVO vo) { public PageResult<ErpMaterialDO> getErpMaterialByApi(MaterialInfomationApiVO vo) {
//通过部门编码查询数据库获取到部门ID //通过部门编码查询数据库获取到部门ID
List<ErpMaterialCorrRspVO> erpMaterialByCompanyCode = erpMaterialCorrService.getErpMaterialByCompanyCode(vo.getDeptId()); List<ErpMaterialCorrRspVO> erpMaterialByCompanyCode = erpMaterialCorrService.getErpMaterialByMainMaterialByCode(vo.getDeptId(), vo.getDeptId());
if (erpMaterialByCompanyCode.isEmpty()) { if (erpMaterialByCompanyCode.isEmpty()) {
return new PageResult<>(); return new PageResult<>();
} }
Set<Long> collect = erpMaterialByCompanyCode.stream().map(ErpMaterialCorrRspVO::getDeptId).collect(Collectors.toSet()); Set<Long> collect = erpMaterialByCompanyCode.stream().map(ErpMaterialCorrRspVO::getDeptId).collect(Collectors.toSet());
if (collect.size() != 1) {
throw exception(CUSTOM_ERROR, "部门编码不唯一或部门编码不存在");
}
DepartmentMaterialPageReqDTO material = new DepartmentMaterialPageReqDTO(); DepartmentMaterialPageReqDTO material = new DepartmentMaterialPageReqDTO();
material.setMaterialNumber(vo.getMaterialNumber()); material.setMaterialNumber(vo.getMaterialNumber());
material.setMaterialName(vo.getMaterialName()); material.setMaterialName(vo.getMaterialName());
@@ -318,7 +314,6 @@ public class ErpMaterialServiceImpl implements ErpMaterialService {
CommonResult<PageResult<DepartmentMaterialRespDTO>> departmentMaterialPage = departmentMaterialApi.getDepartmentMaterialPage(material); CommonResult<PageResult<DepartmentMaterialRespDTO>> departmentMaterialPage = departmentMaterialApi.getDepartmentMaterialPage(material);
List<ErpMaterialDO> erpMaterialDOList = new ArrayList<>(); List<ErpMaterialDO> erpMaterialDOList = new ArrayList<>();
//开始时间 //开始时间
long startTime = System.currentTimeMillis();
if (departmentMaterialPage.getData() != null && departmentMaterialPage.getData().getList() != null && !departmentMaterialPage.getData().getList().isEmpty()) { if (departmentMaterialPage.getData() != null && departmentMaterialPage.getData().getList() != null && !departmentMaterialPage.getData().getList().isEmpty()) {
departmentMaterialPage.getData().getList().forEach(materialInfomation -> { departmentMaterialPage.getData().getList().forEach(materialInfomation -> {
ErpMaterialDO erpMaterialDO = buildErpMaterialDOData(CommonResult.success(materialInfomation)); ErpMaterialDO erpMaterialDO = buildErpMaterialDOData(CommonResult.success(materialInfomation));
@@ -329,13 +324,22 @@ public class ErpMaterialServiceImpl implements ErpMaterialService {
} }
@Override @Override
public List<ErpMaterialDO> getErpMaterialByMainMaterialByCode(String code, String deptId) { public List<ErpMaterialDO> getErpMaterialByMainMaterialByCode(String code, String companyCode) {
List<ErpMaterialDO> erpMaterialDOList = new ArrayList<>();
DepartmentMaterialPageReqDTO material = new DepartmentMaterialPageReqDTO(); DepartmentMaterialPageReqDTO material = new DepartmentMaterialPageReqDTO();
material.setMaterialNumber(code); material.setMaterialNumber(code);
material.setPageSize(10000); material.setPageSize(10000);
material.setDeptId(Long.valueOf(deptId)); List<ErpMaterialCorrRspVO> erpMaterialByCompanyCode = erpMaterialCorrService.getErpMaterialByCompanyCode(companyCode);
if (erpMaterialByCompanyCode.isEmpty()) {
return erpMaterialDOList;
}
Set<Long> collect = erpMaterialByCompanyCode.stream().map(ErpMaterialCorrRspVO::getDeptId).collect(Collectors.toSet());
if (collect.size() != 1) {
throw exception(CUSTOM_ERROR, "部门编码不唯一或部门编码不存在");
}
material.setDeptId(collect.iterator().next());
CommonResult<PageResult<DepartmentMaterialRespDTO>> departmentMaterialPage = departmentMaterialApi.getDepartmentMaterialPage(material); CommonResult<PageResult<DepartmentMaterialRespDTO>> departmentMaterialPage = departmentMaterialApi.getDepartmentMaterialPage(material);
List<ErpMaterialDO> erpMaterialDOList = new ArrayList<>();
if (departmentMaterialPage.isSuccess() && departmentMaterialPage.getData() != null && !departmentMaterialPage.getData().getList().isEmpty()) { if (departmentMaterialPage.isSuccess() && departmentMaterialPage.getData() != null && !departmentMaterialPage.getData().getList().isEmpty()) {
departmentMaterialPage.getData().getList().forEach(materialInfomation -> { departmentMaterialPage.getData().getList().forEach(materialInfomation -> {
ErpMaterialDO erpMaterialDO = buildErpMaterialDOData(CommonResult.success(materialInfomation)); ErpMaterialDO erpMaterialDO = buildErpMaterialDOData(CommonResult.success(materialInfomation));
@@ -350,27 +354,36 @@ public class ErpMaterialServiceImpl implements ErpMaterialService {
public List<ErpMaterialDO> getErpMaterialByApiByCode(String code, String companyCode) { public List<ErpMaterialDO> getErpMaterialByApiByCode(String code, String companyCode) {
List<ErpMaterialDO> erpMaterialDOList = new ArrayList<>(); List<ErpMaterialDO> erpMaterialDOList = new ArrayList<>();
//获取该物料编码下的所有物料id,并根据这个ID查询子物料 //获取该物料编码下的所有物料id,并根据这个ID查询子物料
List<ErpMaterialCorrRspVO> erpMaterialByMainMaterialByCode = erpMaterialCorrService.getErpMaterialByMainMaterialByCode(code); List<ErpMaterialCorrRspVO> erpMaterialByMainMaterialByCode = erpMaterialCorrService.getErpMaterialByMainMaterialByCode(code, companyCode);
if (erpMaterialByMainMaterialByCode.isEmpty()) { if (erpMaterialByMainMaterialByCode.isEmpty()) {
return erpMaterialDOList; return erpMaterialDOList;
} }
List<ErpMaterialCorrRspVO> erpMaterialByCompanyCode = erpMaterialCorrService.getErpMaterialByCompanyCode(companyCode);
if (erpMaterialByCompanyCode.isEmpty()){
return erpMaterialDOList;
}
Set<Long> collect = erpMaterialByCompanyCode.stream().map(ErpMaterialCorrRspVO::getDeptId).collect(Collectors.toSet());
if (collect.size() != 1) {
throw exception(CUSTOM_ERROR, "部门编码不唯一或部门编码不存在");
}
List<Long> mIds = erpMaterialByMainMaterialByCode.stream().map(ErpMaterialCorrRspVO::getMaterialId).toList(); List<Long> mIds = erpMaterialByMainMaterialByCode.stream().map(ErpMaterialCorrRspVO::getMaterialId).toList();
DepartmentMaterialPageReqDTO departmentMaterialPageReqDTO = new DepartmentMaterialPageReqDTO(); CommonResult<List<MaterialInfomationRespDTO>> materialInfomationListByIds = materialInfomationApi.getMaterialInfomationListByIds(mIds);
departmentMaterialPageReqDTO.setInfomationIds(mIds); if (materialInfomationListByIds == null || materialInfomationListByIds.getData() == null || materialInfomationListByIds.getData().isEmpty()) {
departmentMaterialPageReqDTO.setPageSize(10000);
departmentMaterialPageReqDTO.setDeptId(collect.iterator().next());
PageResult<DepartmentMaterialRespDTO> departmentMaterialPage = departmentMaterialApi.getDepartmentMaterialPage(departmentMaterialPageReqDTO).getData();
if (departmentMaterialPage == null || departmentMaterialPage.getList() == null || departmentMaterialPage.getList().isEmpty()) {
return erpMaterialDOList; return erpMaterialDOList;
} }
List<MaterialInfomationRespDTO> data = materialInfomationListByIds.getData();
PageResult<DepartmentMaterialRespDTO> departmentMaterialPage =new PageResult<>();
List<DepartmentMaterialRespDTO> dtos=new ArrayList<>();
data.forEach(item->{
DepartmentMaterialRespDTO departmentMaterialRespDTO = new DepartmentMaterialRespDTO();
departmentMaterialRespDTO.setId(item.getId());
departmentMaterialRespDTO.setMaterialNumber(item.getCode());
departmentMaterialRespDTO.setMaterialName(item.getName());
departmentMaterialRespDTO.setClassesId(item.getClassesId());
departmentMaterialRespDTO.setRemark(item.getRemark());
departmentMaterialRespDTO.setCreateTime(item.getCreateTime());
departmentMaterialRespDTO.setFlatAttributes(item.getFlatAttributes());
dtos.add(departmentMaterialRespDTO);
});
departmentMaterialPage.setList(dtos);
departmentMaterialPage.setTotal((long) data.size());
//// departmentMaterialPageReqDTO.setDeptId(collect.iterator().next());
// PageResult<DepartmentMaterialRespDTO> departmentMaterialPage = departmentMaterialApi.getDepartmentMaterialPage(departmentMaterialPageReqDTO).getData();
// if (departmentMaterialPage == null || departmentMaterialPage.getList() == null || departmentMaterialPage.getList().isEmpty()) {
// return erpMaterialDOList;
// }
departmentMaterialPage.getList().forEach(item -> { departmentMaterialPage.getList().forEach(item -> {
ErpMaterialDO erpMaterialDO = buildErpMaterialDOData(CommonResult.success(item)); ErpMaterialDO erpMaterialDO = buildErpMaterialDOData(CommonResult.success(item));
erpMaterialDOList.add(erpMaterialDO); erpMaterialDOList.add(erpMaterialDO);