Browse Source

2026-05-06

pda跨区调拨优化
master
fengyuan_yang 1 month ago
parent
commit
e104576c2c
  1. 8
      src/main/java/com/gaotao/modules/crossAreaTransfer/dao/CrossAreaTransferMapper.java
  2. 42
      src/main/java/com/gaotao/modules/crossAreaTransfer/service/impl/CrossAreaTransferServiceImpl.java
  3. 5
      src/main/resources/mapper/crossAreaTransfer/CrossAreaTransferMapper.xml

8
src/main/java/com/gaotao/modules/crossAreaTransfer/dao/CrossAreaTransferMapper.java

@ -23,11 +23,11 @@ public interface CrossAreaTransferMapper extends BaseMapper<CrossAreaTransferEnt
* @param labelCode 标签条码
* @param site 站点
* @param warehouseId 仓库ID
* @return 库存信息
* @return 库存信息列表
*/
Map<String, Object> getStockInfoByLabelCode(@Param("labelCode") String labelCode,
@Param("site") String site,
@Param("warehouseId") String warehouseId);
List<Map<String, Object>> getStockInfoByLabelCode(@Param("labelCode") String labelCode,
@Param("site") String site,
@Param("warehouseId") String warehouseId);
/**
* 根据库位获取标签列表

42
src/main/java/com/gaotao/modules/crossAreaTransfer/service/impl/CrossAreaTransferServiceImpl.java

@ -72,31 +72,39 @@ public class CrossAreaTransferServiceImpl extends ServiceImpl<CrossAreaTransferM
try {
if ("label".equals(transferMode)) {
// 按标签调拨获取标签信息
Map<String, Object> stockInfo = crossAreaTransferMapper.getStockInfoByLabelCode(scanCode, site, warehouseId);
// 按标签调拨支持单标签和父标签多子标签两种查询结果
List<Map<String, Object>> stockInfoList = crossAreaTransferMapper.getStockInfoByLabelCode(scanCode, site, warehouseId);
if (stockInfo == null) {
if (stockInfoList == null || stockInfoList.isEmpty()) {
logger.warn("未找到标签库存信息,标签条码: {}", scanCode);
result.put("code", 1);
result.put("msg", "未找到该标签的库存信息");
return result;
}
// 格式化返回数据
Map<String, Object> labelInfo = new HashMap<>();
labelInfo.put("labelCode", stockInfo.get("label_code"));
labelInfo.put("quantity", stockInfo.get("quantity"));
labelInfo.put("warehouseName", stockInfo.get("warehouse_name"));
labelInfo.put("locationId", stockInfo.get("location_id"));
labelInfo.put("status", stockInfo.get("status"));
labelInfo.put("productionDate", stockInfo.get("production_date"));
labelInfo.put("expiryDate", stockInfo.get("expiry_date"));
labelInfo.put("orderRef1", stockInfo.get("order_ref1"));
labelInfo.put("orderRef2", stockInfo.get("order_ref2"));
labelInfo.put("batchNo", stockInfo.get("batch_no"));
labelInfo.put("buNo", stockInfo.get("buNo"));
// 统一格式化返回字段供前端按单条/多条展示
List<Map<String, Object>> labelInfoList = new ArrayList<>();
for (Map<String, Object> stockInfo : stockInfoList) {
Map<String, Object> labelInfo = new HashMap<>();
labelInfo.put("labelCode", stockInfo.get("label_code"));
labelInfo.put("partNo", stockInfo.get("part_no"));
labelInfo.put("unit", stockInfo.get("unit"));
labelInfo.put("quantity", stockInfo.get("quantity"));
labelInfo.put("warehouseName", stockInfo.get("warehouse_name"));
labelInfo.put("locationId", stockInfo.get("location_id"));
labelInfo.put("status", stockInfo.get("status"));
labelInfo.put("productionDate", stockInfo.get("production_date"));
labelInfo.put("expiryDate", stockInfo.get("expiry_date"));
labelInfo.put("orderRef1", stockInfo.get("order_ref1"));
labelInfo.put("orderRef2", stockInfo.get("order_ref2"));
labelInfo.put("batchNo", stockInfo.get("batch_no"));
labelInfo.put("buNo", stockInfo.get("buNo"));
labelInfoList.add(labelInfo);
}
result.put("code", 0);
result.put("data", labelInfo);
// 兼容旧前端单条时仍返回对象多条时返回列表
result.put("data", labelInfoList.size() == 1 ? labelInfoList.get(0) : labelInfoList);
} else if ("location".equals(transferMode)) {
// 按库位调拨获取库位下的所有标签

5
src/main/resources/mapper/crossAreaTransfer/CrossAreaTransferMapper.xml

@ -17,14 +17,17 @@
s.orderref1 as order_ref1,
s.orderref2 as order_ref2,
s.status,
p.UMID as unit,
w.WareHouseName as warehouse_name
FROM inventory_stock s
LEFT JOIN Part p ON s.part_no = p.PartNo AND s.site = p.site and s.bu_no = p.bu_no
LEFT JOIN warehouse w ON s.warehouse_id = w.WareHouseID AND s.site = w.site
WHERE s.roll_no = #{labelCode}
WHERE (s.roll_no = #{labelCode} OR s.Parent_roll_no = #{labelCode})
AND s.site = #{site}
AND s.warehouse_id = #{warehouseId}
AND s.status = '在库'
AND s.qty_on_hand > 0
ORDER BY CASE WHEN s.roll_no = #{labelCode} THEN 0 ELSE 1 END, s.roll_no
</select>
<!-- 根据库位获取标签列表 -->

Loading…
Cancel
Save