包装获取产品信息接口

dev
siontion 3 months ago
parent 6b861d8b10
commit ade28823d1

@ -165,6 +165,16 @@ public class ProjectOrderController {
return success(projectOrderService.getProjectOrderSubListByProjectOrderId(projectOrderId));
}
@GetMapping("/project-order-sub/list-by-project-order-id-subName-spec")
@Operation(summary = "获得项目订单子项目列表")
@Parameter(name = "projectOrderId", description = "项目订单id")
@PreAuthorize("@ss.hasPermission('biz:project-order:query')")
public CommonResult<List<ProjectOrderSubDO>> getProjectOrderSubListByProjectOrderIdSubNameSpec(@RequestParam("projectOrderId") Long projectOrderId,@RequestParam("projectSubName") String projectSubName,@RequestParam("spec") String spec) {
return success(projectOrderService.getProjectOrderSubListByProjectOrderIdSubNameSpec(projectOrderId,projectSubName,spec));
}
@DeleteMapping("/project-order-sub/delete")
@Operation(summary = "删除项目订单子项目")
@Parameter(name = "id", description = "编号", required = true)

@ -47,6 +47,22 @@ public interface ProjectOrderSubMapper extends BaseMapperX<ProjectOrderSubDO> {
return selectList(query);
}
default List<ProjectOrderSubDO> selectListByProjectOrderIdSubNameSpec(Long projectOrderId,String projectSubName,String spec) {
MPJLambdaWrapper<ProjectOrderSubDO> query = new MPJLambdaWrapper<>();
query.selectAll(ProjectOrderSubDO.class)
.select("a.code as projectOrderCode")
.select("b.code as projectSubCode", "b.name projectSubName", "b.spec", "b.unit","ifNull(b.available_quantity,0) as availableQuantity")
.select("ifNull(b.inv_safe,0) as invSafe")
.leftJoin(ProjectOrderDO.class, "a", ProjectOrderDO::getId, ProjectOrderSubDO::getProjectOrderId)
.leftJoin(MaterialDO.class, "b", MaterialDO::getId, ProjectOrderSubDO::getMaterialId)
.disableSubLogicDel()
.orderByAsc(ProjectOrderSubDO::getId)
.eq(ProjectOrderSubDO::getProjectOrderId, projectOrderId)
.like(!StringUtils.isEmpty(projectSubName),ProjectOrderSubDO::getName,projectSubName)
.like(!StringUtils.isEmpty(spec),MaterialDO::getSpec,spec);
return selectList(query);
}
default int deleteByProjectOrderId(Long projectOrderId) {
return delete(ProjectOrderSubDO::getProjectOrderId, projectOrderId);
}

@ -65,6 +65,7 @@ public interface ProjectOrderService {
* @return
*/
List<ProjectOrderSubDO> getProjectOrderSubListByProjectOrderId(Long projectOrderId);
List<ProjectOrderSubDO> getProjectOrderSubListByProjectOrderIdSubNameSpec(Long projectOrderId,String projectSubName,String spec);
MaterialDO getProjectOrderMaterial(String code,Long whId);
/**

@ -257,6 +257,38 @@ public class ProjectOrderServiceImpl implements ProjectOrderService {
}
return projectOrderSubDOList;
}
@Override
public List<ProjectOrderSubDO> getProjectOrderSubListByProjectOrderIdSubNameSpec(Long projectOrderId,String projectSubName,String spec) {
List<ProjectOrderSubDO> projectOrderSubDOList = projectOrderSubMapper.selectListByProjectOrderIdSubNameSpec(projectOrderId,projectSubName,spec);
ProjectOrderDO projectOrderDO = projectOrderMapper.selectById(projectOrderId);
List<String> matCodes = new ArrayList<>();
projectOrderSubDOList.forEach(vo->{
if(!matCodes.contains(vo.getProjectSubCode())){
matCodes.add(vo.getProjectSubCode());
}
});
try {
List<QueryCurrentStockResVO> stockMatDatas = chanjetManager.queryStock(matCodes,projectOrderDO.getWarehouseId());
projectOrderSubDOList.forEach(vo->{
if(stockMatDatas.stream().filter(mo->mo.getInventoryCode().equals(vo.getProjectSubCode())).count()>0){
QueryCurrentStockResVO queryCurrentStockResVO = stockMatDatas.stream().filter(mo->mo.getInventoryCode().equals(vo.getProjectSubCode())).collect(Collectors.toList()).get(0);
if(queryCurrentStockResVO.getAvailableQuantity()!= null){
vo.setAvailableQuantity(new BigDecimal(queryCurrentStockResVO.getAvailableQuantity()));
}else {
vo.setAvailableQuantity(new BigDecimal(0));
}
}else{
vo.setAvailableQuantity(new BigDecimal(0));
}
});
} catch (ChanjetApiException e) {
throw new RuntimeException(e);
}
return projectOrderSubDOList;
}
@SneakyThrows
@Override
public MaterialDO getProjectOrderMaterial(String code, Long whId){

Loading…
Cancel
Save