feat(deliverOrder): 新增缺货零件收货状态及线下收货更新功能

- 在交付订单实体和VO中新增缺货零件是否收货字段quehuoReceived
- 在Mapper中添加quehuoReceived查询接口,判断缺货零件是否全部收货
- 实现服务层方法updateQuehuoReceived,用于更新缺货收货状态
- 结构包订单线下收货接口新增调用updateQuehuoReceived逻辑,确保状态同步更新
- 创建订单时默认quehuoReceived设为false
- 订单确认收货后更新对应deliverId的quehuoReceived状态
This commit is contained in:
曹鹏飞 2025-12-04 14:13:02 +08:00
parent 871aba36e5
commit 78f5224f67
7 changed files with 45 additions and 0 deletions

View File

@ -645,6 +645,7 @@ public class StructuralPackageOrderController extends BaseController {
.setNo(deliverOrderNo)
.setSupplierId(supplierId)
.setQuehuo(trays.stream().anyMatch(DeliverStructuralPackageOrderVO::getQuehuo))
.setQuehuoReceived(false)
.setCreateBy(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now());
structuralPackageDeliverOrderService.save(deliverOrder);
@ -768,6 +769,7 @@ public class StructuralPackageOrderController extends BaseController {
* 线下收货
* @param itemIds 零件项id列表
*/
@Transactional
@PostMapping("offlineReceive")
public ApiResult<Void> offlineReceive(@Valid @RequestBody @NotEmpty List<Long> itemIds) {
List<WmsStructuralPackageOrderTrayItem> items = deliverStructuralPackageOrderTrayItemService.listByIds(itemIds);
@ -780,6 +782,14 @@ public class StructuralPackageOrderController extends BaseController {
if (CollectionUtil.isNotEmpty(items)) {
deliverStructuralPackageOrderTrayItemService.updateBatchById(items);
}
items.stream().map(WmsStructuralPackageOrderTrayItem::getOrderId).forEach(id -> {
WmsStructuralPackageDeliverOrderMap om = structuralPackageDeliverOrderMapService.lambdaQuery()
.eq(WmsStructuralPackageDeliverOrderMap::getOrderId, id)
.one();
if (Objects.nonNull(om)) {
structuralPackageDeliverOrderService.updateQuehuoReceived(om.getDeliverId());
}
});
return ApiResult.success();
}
@ -817,6 +827,10 @@ public class StructuralPackageOrderController extends BaseController {
items.forEach(it -> it.setStoreNum(it.getShipmentNum()));
deliverStructuralPackageOrderTrayItemService.updateBatchById(items);
structuralPackageDeliverOrderService.updateStateByOrderId(request.getId());
WmsStructuralPackageDeliverOrderMap om = structuralPackageDeliverOrderMapService.lambdaQuery()
.eq(WmsStructuralPackageDeliverOrderMap::getOrderId, request.getId())
.one();
structuralPackageDeliverOrderService.updateQuehuoReceived(om.getDeliverId());
SAPMaterialInfoInOrderDTO dto = CollectionUtil.get(sapService.zim004(order.getExternalOrderNo(), order.getSupplierCode(), order.getPackageNo()), 0);
VUtil.trueThrowBusinessError(Objects.isNull(dto)).throwMessage("ZIM_004未查询到数据");
VUtil.trueThrowBusinessError(StrUtil.isBlank(dto.getWarehouseNo())).throwMessage("ZIM_004接口查询到仓库为空");

View File

@ -65,4 +65,9 @@ public class StructuralPackageDeliverOrderVO {
* 是否存在缺货零件
*/
private Boolean quehuo;
/**
* 缺货零件是否都已收货
*/
private Boolean quehuoReceived;
}

View File

@ -70,4 +70,9 @@ public class WmsStructuralPackageDeliverOrder implements Serializable {
* 是否存在缺货零件
*/
private Boolean quehuo;
/**
* 缺货零件是否都已收货
*/
private Boolean quehuoReceived;
}

View File

@ -32,4 +32,6 @@ public interface WmsStructuralPackageDeliverOrderMapper extends BaseMapper<WmsSt
List<DeliverStructuralPackageOrderVO> getInfo(Long id);
List<TrayScanInfoDTO> getTrayNos(String orderNo, String materialNo);
boolean quehuoReceived(Long deliverId);
}

View File

@ -31,4 +31,6 @@ public interface IWmsStructuralPackageDeliverOrderService extends IService<WmsSt
List<DeliverStructuralPackageOrderVO> getInfo(@Valid @NotNull Long id);
List<TrayScanInfoDTO> getTrayNos(String orderNo, String materialNo);
void updateQuehuoReceived(Long deliverId);
}

View File

@ -69,4 +69,12 @@ public class WmsStructuralPackageDeliverOrderServiceImpl extends ServiceImpl<Wms
public List<TrayScanInfoDTO> getTrayNos(String orderNo, String materialNo) {
return baseMapper.getTrayNos(orderNo, materialNo);
}
@Override
public void updateQuehuoReceived(Long deliverId) {
lambdaUpdate()
.set(WmsStructuralPackageDeliverOrder::getQuehuoReceived, !baseMapper.quehuoReceived(deliverId))
.eq(WmsStructuralPackageDeliverOrder::getId, deliverId)
.update();
}
}

View File

@ -93,4 +93,13 @@
INNER JOIN wms_structural_package sp ON spo.package_id=sp."id"
WHERE spdo."no"=#{orderNo} AND sp."no"=#{materialNo}
</select>
<select id="quehuoReceived" resultType="boolean">
SELECT EXISTS(
SELECT 1
FROM wms_structural_package_deliver_order_map spdom
INNER JOIN wms_structural_package_order_tray_item spoti ON spdom.order_id=spoti.order_id
WHERE spoti.offline_received=false AND spdom.deliver_id = #{deliverId}
)
</select>
</mapper>