2025-10-10 15:50:54.243 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [878d9f59, L:/0:0:0:0:0:0:0:1:9000 - R:/0:0:0:0:0:0:0:1:9429] New http connection, requesting read
2025-10-10 15:50:54.243 [reactor-http-nio-2] DEBUG reactor.netty.http.server.HttpServerOperations - [29cf522f, L:/0:0:0:0:0:0:0:1:9000 - R:/0:0:0:0:0:0:0:1:9428] New http connection, requesting read
2025-10-10 15:50:54.243 [reactor-http-nio-3] DEBUG reactor.netty.transport.TransportConfig - [878d9f59, L:/0:0:0:0:0:0:0:1:9000 - R:/0:0:0:0:0:0:0:1:9429] Initialized pipeline DefaultChannelPipeline{(reactor.left.httpCodec = io.netty.handler.codec.http.HttpServerCodec), (reactor.left.httpTrafficHandler = reactor.netty.http.server.HttpTrafficHandler), (reactor.right.reactiveBridge = reactor.netty.channel.ChannelOperationsHandler)}
2025-10-10 15:50:54.243 [reactor-http-nio-2] DEBUG reactor.netty.transport.TransportConfig - [29cf522f, L:/0:0:0:0:0:0:0:1:9000 - R:/0:0:0:0:0:0:0:1:9428] Initialized pipeline DefaultChannelPipeline{(reactor.left.httpCodec = io.netty.handler.codec.http.HttpServerCodec), (reactor.left.httpTrafficHandler = reactor.netty.http.server.HttpTrafficHandler), (reactor.right.reactiveBridge = reactor.netty.channel.ChannelOperationsHandler)}
2025-10-10 15:50:54.302 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [878d9f59, L:/0:0:0:0:0:0:0:1:9000 - R:/0:0:0:0:0:0:0:1:9429] Increasing pending responses, now 1
2025-10-10 15:50:54.346 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServer - [878d9f59-1, L:/0:0:0:0:0:0:0:1:9000 - R:/0:0:0:0:0:0:0:1:9429] Handler is being applied: org.springframework.http.server.reactive.ReactorHttpHandlerAdapter@7d9ebaec
2025-10-10 15:50:54.472 [reactor-http-nio-3] DEBUG o.s.web.server.adapter.HttpWebHandlerAdapter - [878d9f59-1] HTTP POST "/master/inventory/query"
2025-10-10 15:50:54.533 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.a.RequestMappingHandlerMapping - [878d9f59-1] Mapped to com.hvlink.controller.InventoryController#selectQuery(InventoryParam)
2025-10-10 15:50:54.581 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.a.RequestBodyMethodArgumentResolver - [878d9f59-1] Content-Type:application/json
2025-10-10 15:50:54.602 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.a.RequestBodyMethodArgumentResolver - [878d9f59-1] 0..1 [com.hvlink.entity.param.master.InventoryParam]
2025-10-10 15:50:54.668 [reactor-http-nio-3] DEBUG reactor.netty.channel.FluxReceive - [878d9f59-1, L:/0:0:0:0:0:0:0:1:9000 - R:/0:0:0:0:0:0:0:1:9429] [terminated=false, cancelled=false, pending=0, error=null]: subscribing inbound receiver
2025-10-10 15:50:54.786 [reactor-http-nio-3] DEBUG o.s.http.codec.json.Jackson2JsonDecoder - [878d9f59-1] Decoded [InventoryParam(id=null, companyCode=null, supplierCode=null, supplierName=null, factoryCode=null, fa (truncated)...]
2025-10-10 15:50:54.944 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession
2025-10-10 15:50:54.985 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4efe01a7] was not registered for synchronization because synchronization is not active
2025-10-10 15:50:55.586 [reactor-http-nio-3] DEBUG o.springframework.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource
2025-10-10 15:50:55.640 [reactor-http-nio-3] DEBUG o.m.spring.transaction.SpringManagedTransaction - JDBC Connection [ConnectionID:1 ClientConnectionId: e1375d39-6e8e-4da3-98f2-2d170aa65263] will not be managed by Spring
2025-10-10 15:50:55.663 [reactor-http-nio-3] DEBUG c.h.m.master.InventoryMapper.selectPage_mpCount - ==> Preparing: SELECT COUNT(*) AS total FROM tb_inventory WHERE (is_deleted = ?)
2025-10-10 15:50:55.837 [reactor-http-nio-3] DEBUG c.h.m.master.InventoryMapper.selectPage_mpCount - ==> Parameters: 0(Integer)
2025-10-10 15:50:55.955 [reactor-http-nio-3] DEBUG c.h.m.master.InventoryMapper.selectPage_mpCount - <== Total: 1
2025-10-10 15:50:55.970 [reactor-http-nio-3] DEBUG c.hvlink.mapper.master.InventoryMapper.selectPage - ==> Preparing: SELECT id,company_code,supplier_code,factory_code,warehouse_code,part_code,part_desc,supplier_part_code,unit,special_flag,batch_no,no_limit_quantity,quality_quantity,freeze_quantity,is_deleted,create_by,create_time,update_by,update_time FROM tb_inventory WHERE (is_deleted = ?) ORDER BY update_time DESC OFFSET ? ROWS FETCH NEXT ? ROWS ONLY
2025-10-10 15:50:55.970 [reactor-http-nio-3] DEBUG c.hvlink.mapper.master.InventoryMapper.selectPage - ==> Parameters: 0(Integer), 0(Long), 10(Long)
2025-10-10 15:50:56.095 [reactor-http-nio-3] DEBUG c.hvlink.mapper.master.InventoryMapper.selectPage - <== Total: 10
2025-10-10 15:50:56.096 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4efe01a7]
2025-10-10 15:50:56.096 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession
2025-10-10 15:50:56.096 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@34d0be99] was not registered for synchronization because synchronization is not active
2025-10-10 15:50:56.097 [reactor-http-nio-3] DEBUG o.springframework.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource
2025-10-10 15:50:56.097 [reactor-http-nio-3] DEBUG o.m.spring.transaction.SpringManagedTransaction - JDBC Connection [ConnectionID:1 ClientConnectionId: e1375d39-6e8e-4da3-98f2-2d170aa65263] will not be managed by Spring
2025-10-10 15:50:56.097 [reactor-http-nio-3] DEBUG com.hvlink.mapper.master.SupplierMapper.selectList - ==> Preparing: SELECT id,company_code,supplier_code,supplier_name,supplier_tel,remark,is_deleted,create_by,create_time,update_by,update_time FROM tm_supplier
2025-10-10 15:50:56.097 [reactor-http-nio-3] DEBUG com.hvlink.mapper.master.SupplierMapper.selectList - ==> Parameters:
2025-10-10 15:50:56.128 [reactor-http-nio-3] DEBUG com.hvlink.mapper.master.SupplierMapper.selectList - <== Total: 18
2025-10-10 15:50:56.128 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@34d0be99]
2025-10-10 15:50:56.130 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession
2025-10-10 15:50:56.130 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2baf52bc] was not registered for synchronization because synchronization is not active
2025-10-10 15:50:56.130 [reactor-http-nio-3] DEBUG o.springframework.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource
2025-10-10 15:50:56.130 [reactor-http-nio-3] DEBUG o.m.spring.transaction.SpringManagedTransaction - JDBC Connection [ConnectionID:1 ClientConnectionId: e1375d39-6e8e-4da3-98f2-2d170aa65263] will not be managed by Spring
2025-10-10 15:50:56.130 [reactor-http-nio-3] DEBUG com.hvlink.mapper.master.FactoryMapper.selectList - ==> Preparing: SELECT id,company_code,factory_code,factory_name,status,is_deleted,create_by,create_time,update_by,update_time FROM tm_factory
2025-10-10 15:50:56.130 [reactor-http-nio-3] DEBUG com.hvlink.mapper.master.FactoryMapper.selectList - ==> Parameters:
2025-10-10 15:50:56.154 [reactor-http-nio-3] DEBUG com.hvlink.mapper.master.FactoryMapper.selectList - <== Total: 2
2025-10-10 15:50:56.154 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2baf52bc]
2025-10-10 15:50:56.155 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Creating a new SqlSession
2025-10-10 15:50:56.156 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2a657005] was not registered for synchronization because synchronization is not active
2025-10-10 15:50:56.156 [reactor-http-nio-3] DEBUG o.springframework.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource
2025-10-10 15:50:56.156 [reactor-http-nio-3] DEBUG o.m.spring.transaction.SpringManagedTransaction - JDBC Connection [ConnectionID:1 ClientConnectionId: e1375d39-6e8e-4da3-98f2-2d170aa65263] will not be managed by Spring
2025-10-10 15:50:56.156 [reactor-http-nio-3] DEBUG com.hvlink.mapper.master.PackageMapper.selectList - ==> Preparing: SELECT id,company_code,factory_code,part_code,unit,standard_package,box_quantity,package_quantity,drag_quantity,max_inventory_level,safety_inventory,is_deleted,create_by,create_time,update_by,update_time FROM tm_package
2025-10-10 15:50:56.156 [reactor-http-nio-3] DEBUG com.hvlink.mapper.master.PackageMapper.selectList - ==> Parameters:
2025-10-10 15:51:12.916 [reactor-http-nio-3] DEBUG com.hvlink.mapper.master.PackageMapper.selectList - <== Total: 186869
2025-10-10 15:51:12.916 [reactor-http-nio-3] DEBUG org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2a657005]
2025-10-10 15:51:13.154 [reactor-http-nio-3] DEBUG reactor.netty.channel.ChannelOperations - [878d9f59-1, L:/0:0:0:0:0:0:0:1:9000 - R:/0:0:0:0:0:0:0:1:9429] [HttpServer] Channel inbound receiver cancelled (operation cancelled).
2025-10-10 15:51:13.174 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.a.RequestMappingHandlerAdapter - [878d9f59-1] Using @ExceptionHandler com.hvlink.exceptions.ExceptionHandle#handleException(Exception)
2025-10-10 15:51:13.195 [reactor-http-nio-3] ERROR com.hvlink.exceptions.ExceptionHandle - ===空指针异常==
java.lang.NullPointerException: null
at com.hvlink.service.impl.InventoryServiceImpl.lambda$selectQuery$5(InventoryServiceImpl.java:183)
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Assembly trace from producer [reactor.core.publisher.MonoFlatMap] :
reactor.core.publisher.Mono.flatMap(Mono.java:3137)
org.springframework.web.reactive.result.method.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:136)
Error has been observed at the following site(s):
*___Mono.flatMap ⇢ at org.springframework.web.reactive.result.method.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:136)
*_____Mono.defer ⇢ at org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerAdapter.handle(RequestMappingHandlerAdapter.java:200)
*______Mono.then ⇢ at org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerAdapter.handle(RequestMappingHandlerAdapter.java:200)
|_ Mono.doOnNext ⇢ at org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerAdapter.handle(RequestMappingHandlerAdapter.java:201)
|_ Mono.doOnNext ⇢ at org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerAdapter.handle(RequestMappingHandlerAdapter.java:202)
Original Stack Trace:
at com.hvlink.service.impl.InventoryServiceImpl.lambda$selectQuery$5(InventoryServiceImpl.java:183)
at java.util.ArrayList.forEach(ArrayList.java:1259)
at com.hvlink.service.impl.InventoryServiceImpl.selectQuery(InventoryServiceImpl.java:163)
at com.hvlink.service.impl.InventoryServiceImpl$$FastClassBySpringCGLIB$$64fe8815.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:707)
at com.hvlink.service.impl.InventoryServiceImpl$$EnhancerBySpringCGLIB$$319300a8.selectQuery(<generated>)
at com.hvlink.controller.InventoryController.selectQuery(InventoryController.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$invoke$0(InvocableHandlerMethod.java:145)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839)
at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:258)
at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:347)
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180)
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101)
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299)
at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839)
at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onComplete(FluxMapFuseable.java:152)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277)
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)
at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415)
at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:439)
at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:656)
at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:276)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:750)
2025-10-10 15:51:13.206 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.annotation.ResponseBodyResultHandler - [878d9f59-1] Using 'application/json' given [*/*] and supported [application/json, application/*+json, application/x-ndjson, text/event-stream]
2025-10-10 15:51:13.206 [reactor-http-nio-3] DEBUG o.s.w.r.r.m.annotation.ResponseBodyResultHandler - [878d9f59-1] 0..1 [com.hvlink.common.Result<?>]
2025-10-10 15:51:13.242 [reactor-http-nio-3] DEBUG o.s.http.codec.json.Jackson2JsonEncoder - [878d9f59-1] Encoding [Result(status=500, msg=发现未知问题,请联系管理员!, data=null, timestamp=1760082673200)]
2025-10-10 15:51:13.301 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [878d9f59-1, L:/0:0:0:0:0:0:0:1:9000 - R:/0:0:0:0:0:0:0:1:9429] Decreasing pending responses, now 0
2025-10-10 15:51:13.302 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [878d9f59-1, L:/0:0:0:0:0:0:0:1:9000 - R:/0:0:0:0:0:0:0:1:9429] Last HTTP packet was sent, terminating the channel
2025-10-10 15:51:13.328 [reactor-http-nio-3] DEBUG o.s.web.server.adapter.HttpWebHandlerAdapter - [878d9f59-1] Completed 500 INTERNAL_SERVER_ERROR
2025-10-10 15:51:13.341 [reactor-http-nio-3] DEBUG reactor.netty.http.server.HttpServerOperations - [878d9f59-1, L:/0:0:0:0:0:0:0:1:9000 - R:/0:0:0:0:0:0:0:1:9429] Last HTTP response frame
/**
* 分页查询库存信息
* @param inventoryParam 查询参数
* @return 分页结果
*/
@Override
public PageResult<InventoryVO> selectQuery(InventoryParam inventoryParam) {
PageResult<InventoryVO> pageResult = new PageResult<>();
// 构建查询条件
LambdaQueryWrapper<InventoryPO> wrapper = Wrappers.<InventoryPO>lambdaQuery()
.eq(StringUtils.isNotBlank(inventoryParam.getCompanyCode()), InventoryPO::getCompanyCode, inventoryParam.getCompanyCode())
.eq(StringUtils.isNotBlank(inventoryParam.getFactoryCode()), InventoryPO::getFactoryCode, inventoryParam.getFactoryCode())
.eq(StringUtils.isNotBlank(inventoryParam.getSupplierCode()), InventoryPO::getSupplierCode, inventoryParam.getSupplierCode())
.like(StringUtils.isNotBlank(inventoryParam.getPartCode()), InventoryPO::getPartCode, inventoryParam.getPartCode())
.like(StringUtils.isNotBlank(inventoryParam.getPartDesc()), InventoryPO::getPartDesc, inventoryParam.getPartDesc())
.eq(InventoryPO::getIsDeleted, 0) // 只查询未删除的记录
.orderByDesc(InventoryPO::getUpdateTime);
Page<InventoryPO> poPage = inventoryMapper.selectPage(new Page<>(inventoryParam.getPageIndex(), inventoryParam.getPageSize()), wrapper);
if (poPage.getTotal() > 0) {
// 查询所有供应商信息
Map<String, SupplierPO> supplierMap = supplierMapper.selectList(Wrappers.emptyWrapper()).stream()
.collect(Collectors.toMap(
SupplierPO::getSupplierCode,
Function.identity(),
BinaryOperator.maxBy(Comparator.comparing(SupplierPO::getCreateTime))
));
// 查询所有工厂信息
Map<String, FactoryPO> factoryMap = factoryMapper.selectList(Wrappers.emptyWrapper()).stream()
.collect(Collectors.toMap(
FactoryPO::getFactoryCode,
Function.identity(),
BinaryOperator.maxBy(Comparator.comparing(FactoryPO::getCreateTime))
));
// 查询所有包装信息(获取安全库存)
Map<String, PackagePO> packageMap = packageMapper.selectList(Wrappers.emptyWrapper()).stream()
.collect(Collectors.toMap(
po -> po.getFactoryCode() + "_" + po.getPartCode(), // 使用工厂代码和零件号作为组合键
Function.identity(),
BinaryOperator.maxBy(Comparator.comparing(PackagePO::getCreateTime))
));
pageResult.setTotal(poPage.getTotal());
pageResult.setPageIndex(poPage.getCurrent());
pageResult.setPageSize(poPage.getSize());
List<InventoryVO> voList = Lists.newArrayList();
poPage.getRecords().forEach(po -> {
InventoryVO vo = BeanCopyUtils.copyBean(po, InventoryVO.class);
// 设置供应商信息
SupplierPO supplierPO = supplierMap.get(po.getSupplierCode());
if (Objects.nonNull(supplierPO)) {
vo.setSupplierName(supplierPO.getSupplierName());
}
// 设置工厂信息
FactoryPO factoryPO = factoryMap.get(po.getFactoryCode());
if (Objects.nonNull(factoryPO)) {
vo.setFactoryName(factoryPO.getFactoryName());
}
// 设置安全库存信息和库存状态
String packageKey = po.getFactoryCode() + "_" + po.getPartCode();
PackagePO packagePO = packageMap.get(packageKey);
if (Objects.nonNull(packagePO)) {
// 计算库存状态:如果可用库存低于安全库存,则为"过少",否则为"正常"
if (po.getNoLimitQuantity() < packagePO.getSafetyInventory()) {
vo.setInventoryStatus("过少");
} else {
vo.setInventoryStatus("正常");
}
} else {
// 如果没有找到对应的包装信息,状态设为正常
vo.setInventoryStatus("正常");
}
voList.add(vo);
});
pageResult.setRecords(voList);
}
return pageResult;
}
为什么查出来那么多条,一共十八万多条,但是我的数据库中只有几百条数据,是不是笛卡尔积?
最新发布