1463 WMS系统钢构包采购业务功能优化

This commit is contained in:
10001392 2026-05-09 09:51:20 +08:00
parent 3aed6fe789
commit ea971332cc
8 changed files with 255 additions and 56 deletions

View File

@ -187,6 +187,15 @@ public class StructuralPackageOrderController extends BaseController {
Integer trayNum = packageVO.getTrayNum() != null ? packageVO.getTrayNum().intValue() : 0;
VUtil.trueThrowBusinessError(trayNum <= 0).throwMessage("托盘数量必须大于0");
return generateTrayWithTrayNum(packageVO, supplierCode, num, orderNum, trayNum);
}
/**
* 生成托盘指定托盘数量
*/
private GenerateTrayVO generateTrayWithTrayNum(PackageVO packageVO, String supplierCode, BigDecimal num, BigDecimal orderNum, Integer trayNum) {
VUtil.trueThrowBusinessError(trayNum <= 0).throwMessage("托盘数量必须大于0");
// 生成日期部分年后2位+月2位+日2位
LocalDate now = LocalDate.now();
String datePart = String.format("%02d%02d%02d",
@ -212,7 +221,7 @@ public class StructuralPackageOrderController extends BaseController {
TrayVO tray = new TrayVO()
.setNo(generatedTrayNo)
.setTray("") // 托盘序号设置为空
// .setStation(material.getStation())
.setStation("")
.setMaterialNo(packageVO.getNo())
.setMaterialDesc(packageVO.getName())
.setTotalWeight(BigDecimal.ZERO);
@ -322,19 +331,13 @@ public class StructuralPackageOrderController extends BaseController {
.setNum(BigDecimal.ZERO)
.setStation(it.getStation())
.setTray(it.getTray())).toList();
List<WmsStructuralPackageOrderTrayItem> items = new ArrayList<>();
trays.forEach(tray -> {
List<TrayItemVO> itemVOS = trayVO.getItems().stream().filter(it -> StrUtil.equals(it.getNo(), tray.getNo())).toList();
items.addAll(itemVOS.stream().map(it -> {
WmsStructuralPackageOrderTrayItem item = Convert.convert(WmsStructuralPackageOrderTrayItem.class, it);
item.setOrderId(order.getId());
item.setTrayId(tray.getId());
tray.setNum(tray.getNum().add(item.getShipmentNum()));
tray.setWeight(tray.getWeight().add(NumberUtil.mul(it.getWeight(), item.getShipmentNum())));
return item;
}).toList()
);
});
List<WmsStructuralPackageOrderTrayItem> items = trayVO.getItems().stream().map(it -> {
WmsStructuralPackageOrderTrayItem item = Convert.convert(WmsStructuralPackageOrderTrayItem.class, it);
item.setOrderId(order.getId());
// 不再设置 trayId断开与托盘的关联
item.setTrayId(-1L);
return item;
}).toList();
structuralPackageOrderTrayService.saveBatch(trays);
structuralPackageOrderTrayItemService.deleteByOrderId(order.getId());
structuralPackageOrderTrayItemService.saveBatch(items);
@ -430,11 +433,15 @@ public class StructuralPackageOrderController extends BaseController {
);
List<WmsStructuralPackageOrderTrayItem> items = structuralPackageOrderTrayItemService.getList(id);
vo.setItems(items.stream().map(item -> {
WmsStructuralPackageOrderTray tray = trays.stream().filter(it -> Objects.equals(it.getId(), item.getTrayId())).findFirst().get();
TrayItemVO ivo = Convert.convert(TrayItemVO.class, item);
ivo.setNo(tray.getNo());
if (Objects.equals(tray.getState(), (short) 3)) {
ivo.setStoreNum(item.getStoreNum());
// 由于断开了与托盘的关联托盘号设置为空
ivo.setNo("");
// 获取订单下的任意一个托盘状态如果有托盘的话
if (CollectionUtil.isNotEmpty(trays)) {
WmsStructuralPackageOrderTray firstTray = trays.get(0);
if (Objects.equals(firstTray.getState(), (short) 3)) {
ivo.setStoreNum(item.getStoreNum());
}
}
return ivo;
}).toList());
@ -490,33 +497,43 @@ public class StructuralPackageOrderController extends BaseController {
/**
* 获取托盘零件列表
*
* @param id 托盘id
* @param id 订单id
*/
@GetMapping("getItems")
public ApiResult<List<DeliverStructuralPackageOrderTrayItemVO>> getItems(@Valid @RequestParam @NotNull Long id) {
return ApiResult.success(structuralPackageOrderTrayItemService.getListVOByTrayId(id));
// 直接根据订单ID获取物料项列表不再依赖托盘关联
List<DeliverStructuralPackageOrderTrayItemVO> result = structuralPackageOrderTrayItemService.getListVOByOrderId(id);
return ApiResult.success(result);
}
/**
* 导出托盘零件列表
*
* @param id 托盘id
* @param id 订单id
*/
@PostMapping("exportItems")
public void exportItems(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws IOException {
List<DeliverStructuralPackageOrderTrayItemVO> list = structuralPackageOrderTrayItemService.getListVOByTrayId(id);
// 直接根据订单ID获取物料项列表不再依赖托盘关联
List<DeliverStructuralPackageOrderTrayItemVO> list = structuralPackageOrderTrayItemService.getListVOByOrderId(id);
EecExcelUtil.export("零件信息", "sheet1", list, response);
}
/**
* 导出老鼠图PDF
*
* @param id 托盘id
* @param id 订单id
*/
@GetMapping("exportPdf")
public ApiResult<String> exportPdf(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception {
DeliverStructuralPackageOrderExtendVO trayVO = structuralPackageOrderTrayService.getInfo(id);
// 根据订单ID获取第一个托盘信息用于生成PDF
List<WmsStructuralPackageOrderTray> trays = structuralPackageOrderTrayService.getList(id);
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(trays)).throwMessage("数据不存在");
// 使用第一个托盘的信息
WmsStructuralPackageOrderTray firstTray = trays.get(0);
DeliverStructuralPackageOrderExtendVO trayVO = structuralPackageOrderTrayService.getInfo(firstTray.getId());
VUtil.trueThrowBusinessError(Objects.isNull(trayVO)).throwMessage("数据不存在");
PackageVO vo = new PackageVO()
.setNo(trayVO.getPackageNo())
.setExternalOrderNo(trayVO.getExternalOrderNo())
@ -531,8 +548,11 @@ public class StructuralPackageOrderController extends BaseController {
.setDrawingNo(trayVO.getPackageDrawingNo())
.setName(trayVO.getPackageDesc())
.setQrCode(QRCodeUtil.generateQRCodeBase64(trayVO.getPackageNo(), 100, 100));
List<DeliverStructuralPackageOrderTrayItemVO> list = structuralPackageOrderTrayItemService.getListVOByTrayId(id);
List<PackageMaterialDTO> items = list.stream().map(item -> new PackageMaterialDTO()
// 获取该订单下的所有物料项不再依赖托盘关联
List<DeliverStructuralPackageOrderTrayItemVO> allItems = structuralPackageOrderTrayItemService.getListVOByOrderId(id);
List<PackageMaterialDTO> items = allItems.stream().map(item -> new PackageMaterialDTO()
.setImage(item.getImage())
.setNo(item.getMaterialNo())
.setDrawingNo(item.getDrawingNo())
@ -554,13 +574,21 @@ public class StructuralPackageOrderController extends BaseController {
/**
* 导出零件标签PDF
*
* @param id 托盘id
* @param id 订单id
*/
@GetMapping("exportItemPdf")
public void exportItemPdf(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception {
DeliverStructuralPackageOrderExtendVO trayVO = structuralPackageOrderTrayService.getInfo(id);
// 根据订单ID获取第一个托盘信息
List<WmsStructuralPackageOrderTray> trays = structuralPackageOrderTrayService.getList(id);
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(trays)).throwMessage("数据不存在");
WmsStructuralPackageOrderTray firstTray = trays.get(0);
DeliverStructuralPackageOrderExtendVO trayVO = structuralPackageOrderTrayService.getInfo(firstTray.getId());
VUtil.trueThrowBusinessError(Objects.isNull(trayVO)).throwMessage("数据不存在");
List<DeliverStructuralPackageOrderTrayItemVO> list = structuralPackageOrderTrayItemService.getListVOByTrayId(id);
// 获取该订单下的所有物料项不再依赖托盘关联
List<DeliverStructuralPackageOrderTrayItemVO> list = structuralPackageOrderTrayItemService.getListVOByOrderId(id);
List<DeliverStructuralPackageOrderTrayItemVO> datas = new ArrayList<>();
for (DeliverStructuralPackageOrderTrayItemVO it : list) {
String code = Base62Util.encode(it.getId());
@ -590,13 +618,21 @@ public class StructuralPackageOrderController extends BaseController {
/**
* 导出零件标签图片ZIP
*
* @param id 托盘id
* @param id 订单id
*/
@GetMapping(value = "exportItemImageZip", produces = "application/zip")
public ResponseEntity<byte[]> exportItemImageZip(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception {
DeliverStructuralPackageOrderExtendVO trayVO = structuralPackageOrderTrayService.getInfo(id);
VUtil.trueThrowBusinessError(Objects.isNull(trayVO)).throwMessage("数据不存在");
List<DeliverStructuralPackageOrderTrayItemVO> list = structuralPackageOrderTrayItemService.getListVOByTrayId(id);
// 获取订单信息
DeliverStructuralPackageOrderVO orderVO = structuralPackageOrderService.getInfo(id);
VUtil.trueThrowBusinessError(Objects.isNull(orderVO)).throwMessage("数据不存在");
// 获取第一个托盘信息用于生成标签
List<WmsStructuralPackageOrderTray> trays = structuralPackageOrderTrayService.getList(id);
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(trays)).throwMessage("数据不存在");
DeliverStructuralPackageOrderExtendVO trayVO = structuralPackageOrderTrayService.getInfo(trays.get(0).getId());
// 直接根据订单ID获取物料项列表不再依赖托盘关联
List<DeliverStructuralPackageOrderTrayItemVO> list = structuralPackageOrderTrayItemService.getListVOByOrderId(id);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (ZipOutputStream zos = new ZipOutputStream(baos)) {
List<DeliverStructuralPackageOrderTrayItemVO> datas = new ArrayList<>();
@ -640,18 +676,27 @@ public class StructuralPackageOrderController extends BaseController {
/**
* 导出托盘标签PDF
*
* @param id 托盘id
* @param id 订单id
*/
@GetMapping("exportTrayPdf")
public void exportTrayPdf(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception {
DeliverStructuralPackageOrderExtendVO trayVO = structuralPackageOrderTrayService.getInfo(id);
VUtil.trueThrowBusinessError(Objects.isNull(trayVO)).throwMessage("数据不存在");
trayVO.setQrCode(QRCodeUtil.generateQRCodeBase64(trayVO.getTrayNo(), 100, 100));
Map<String, Object> variables = new HashMap<>();
variables.put("info", trayVO);
String html = ThymeleafUtil.generator("/template/qrcode/", "tray", ".html", variables);
URL baseUrl = new ClassPathResource("template/qrcode/").getURL();
PdfGeneratorUtil.generatePdf("托盘标签" + trayVO.getTrayNo(), html, baseUrl.toString(), response);
// 根据订单ID获取所有托盘为每个托盘生成标签
List<WmsStructuralPackageOrderTray> trays = structuralPackageOrderTrayService.getList(id);
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(trays)).throwMessage("数据不存在");
// 这里需要为订单下的所有托盘生成标签
// 由于原方法只处理单个托盘现在需要遍历所有托盘
for (WmsStructuralPackageOrderTray tray : trays) {
DeliverStructuralPackageOrderExtendVO trayVO = structuralPackageOrderTrayService.getInfo(tray.getId());
VUtil.trueThrowBusinessError(Objects.isNull(trayVO)).throwMessage("数据不存在");
trayVO.setQrCode(QRCodeUtil.generateQRCodeBase64(trayVO.getTrayNo(), 100, 100));
Map<String, Object> variables = new HashMap<>();
variables.put("info", trayVO);
String html = ThymeleafUtil.generator("/template/qrcode/", "tray", ".html", variables);
URL baseUrl = new ClassPathResource("template/qrcode/").getURL();
// 注意这里会多次调用response实际使用时可能需要合并PDF或返回ZIP
PdfGeneratorUtil.generatePdf("托盘标签" + trayVO.getTrayNo(), html, baseUrl.toString(), response);
}
}
/**
@ -677,20 +722,33 @@ public class StructuralPackageOrderController extends BaseController {
/**
* 导出齐套标签PDF
*
* @param id 托盘id
* @param id 订单id
*/
@GetMapping("exportQiTaoPdf")
public void exportQiTaoPdf(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception {
DeliverStructuralPackageOrderExtendVO trayVO = structuralPackageOrderTrayService.getInfo(id);
VUtil.trueThrowBusinessError(Objects.isNull(trayVO)).throwMessage("数据不存在");
String temp = trayVO.getExternalOrderNo() + "$" + trayVO.getRowNo() + "$" + trayVO.getPackageNo();
List<WmsQrCodeMaster> codes = qrCodeMasterService.getByExtendId(trayVO.getOrderId());
trayVO.setQrCode(QRCodeUtil.generateQRCodeBase64(codes.get(0).getBarcodeCode() + "$" + temp, 100, 100));
Map<String, Object> variables = new HashMap<>();
variables.put("info", trayVO);
String html = ThymeleafUtil.generator("/template/qrcode/", "qitao", ".html", variables);
URL baseUrl = new ClassPathResource("template/qrcode/").getURL();
PdfGeneratorUtil.generatePdf("齐套标签" + trayVO.getTrayNo(), html, baseUrl.toString(), response);
// 根据订单ID获取所有托盘为每个托盘生成齐套标签
List<WmsStructuralPackageOrderTray> trays = structuralPackageOrderTrayService.getList(id);
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(trays)).throwMessage("数据不存在");
// 获取订单信息用于生成二维码
WmsStructuralPackageOrder order = structuralPackageOrderService.getById(id);
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
List<WmsQrCodeMaster> codes = qrCodeMasterService.getByExtendId(id);
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(codes)).throwMessage("未找到二维码信息");
// 为每个托盘生成齐套标签
for (WmsStructuralPackageOrderTray tray : trays) {
DeliverStructuralPackageOrderExtendVO trayVO = structuralPackageOrderTrayService.getInfo(tray.getId());
VUtil.trueThrowBusinessError(Objects.isNull(trayVO)).throwMessage("数据不存在");
String temp = trayVO.getExternalOrderNo() + "$" + trayVO.getRowNo() + "$" + trayVO.getPackageNo();
trayVO.setQrCode(QRCodeUtil.generateQRCodeBase64(codes.get(0).getBarcodeCode() + "$" + temp, 100, 100));
Map<String, Object> variables = new HashMap<>();
variables.put("info", trayVO);
String html = ThymeleafUtil.generator("/template/qrcode/", "qitao", ".html", variables);
URL baseUrl = new ClassPathResource("template/qrcode/").getURL();
PdfGeneratorUtil.generatePdf("齐套标签" + trayVO.getTrayNo(), html, baseUrl.toString(), response);
}
}
/**
@ -723,7 +781,16 @@ public class StructuralPackageOrderController extends BaseController {
DeliverStructuralPackageOrderTrayVO vo = structuralPackageOrderTrayService.getInfoByNo(trayNo);
VUtil.trueThrowBusinessError(Objects.isNull(vo)).throwMessage("无效的托盘号");
VUtil.trueThrowBusinessError(!Objects.equals(vo.getState(), 0)).throwMessage("该托盘已打包");
vo.setItems(structuralPackageOrderTrayItemService.getSimpleListByTrayNo(trayNo));
// 通过托盘的订单ID获取该订单下的所有物料项
List<DeliverStructuralPackageOrderTrayItemVO> items = structuralPackageOrderTrayItemService.getListVOByOrderId(vo.getOrderId());
vo.setItems(items.stream().map(item -> {
DeliverStructuralPackageOrderTrayItemSimpleVO simpleVO = new DeliverStructuralPackageOrderTrayItemSimpleVO();
simpleVO.setMaterialNo(item.getMaterialNo());
simpleVO.setMaterialDesc(item.getMaterialDesc());
simpleVO.setShipmentNum(item.getShipmentNum());
return simpleVO;
}).toList());
return ApiResult.success(vo);
}
@ -739,7 +806,8 @@ public class StructuralPackageOrderController extends BaseController {
VUtil.trueThrowBusinessError(Objects.isNull(tray)).throwMessage("托盘不存在");
VUtil.trueThrowBusinessError(!Objects.equals(tray.getState(), OrderState.Unpackaged.getState())).throwMessage("请勿重复打包");
DeliverStructuralPackageOrderVO order = structuralPackageOrderService.getInfo(tray.getOrderId());
List<WmsStructuralPackageOrderTrayItem> trayItems = structuralPackageOrderTrayItemService.getListByTrayId(tray.getId());
// 获取订单下的所有物料项而不是特定托盘的物料项
List<WmsStructuralPackageOrderTrayItem> trayItems = structuralPackageOrderTrayItemService.getList(tray.getOrderId());
List<String> materialNos = new ArrayList<>();
List<StructuralPackageMaterialQRCodeContentDTO> qrCodeDTOs = new ArrayList<>();
trayItems.forEach(it -> {
@ -1397,4 +1465,78 @@ public class StructuralPackageOrderController extends BaseController {
);
return ApiResult.success();
}
/**
* 根据指定托盘数量重新生成订单托盘信息
*
* @param request 请求参数
*/
@Transactional
@PostMapping("updateTrayNum")
public ApiResult<Void> updateTrayNum(@Valid @RequestBody UpdatePackageTrayNumQO request) {
// 1. 验证并获取订单信息
WmsStructuralPackageOrder order = structuralPackageOrderService.getById(request.getOrderId());
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
// 2. 检查是否有已打包的托盘
VUtil.trueThrowBusinessError(structuralPackageOrderTrayService.lambdaQuery()
.eq(WmsStructuralPackageOrderTray::getOrderId, order.getId())
.ne(WmsStructuralPackageOrderTray::getState, OrderState.Unpackaged.getState())
.exists())
.throwMessage("修改失败,该订单有托盘已打包或发货,无法修改托盘数量");
// 3. 验证托盘数量
BigDecimal trayNumDecimal = request.getTrayNum();
VUtil.trueThrowBusinessError(trayNumDecimal == null || trayNumDecimal.compareTo(BigDecimal.ZERO) <= 0)
.throwMessage("托盘数量必须大于0");
Integer trayNum = trayNumDecimal.intValue();
// 4. 获取钢构包信息
PackageVO packageVO = structuralPackageService.getInfo(order.getPackageId());
VUtil.trueThrowBusinessError(Objects.isNull(packageVO)).throwMessage("钢构包不存在");
// 5. 获取供应商代码
UserSupplier supplier = userSupplierService.getById(order.getSupplierId());
VUtil.trueThrowBusinessError(Objects.isNull(supplier)).throwMessage("供应商不存在");
String supplierCode = supplier.getSupplierCode();
// 6. 重新生成托盘信息使用前端传入的托盘数量
GenerateTrayVO trayVO = generateTrayWithTrayNum(packageVO, supplierCode,
BigDecimal.valueOf(order.getNum()), order.getPlanNum(), trayNum);
// 7. 删除旧的托盘和托盘项
structuralPackageOrderTrayService.deleteByOrderId(order.getId());
structuralPackageOrderTrayItemService.deleteByOrderId(order.getId());
// 8. 保存新的托盘信息
List<WmsStructuralPackageOrderTray> trays = trayVO.getTrays().stream().map(it -> new WmsStructuralPackageOrderTray()
.setId(IdUtil.getSnowflakeNextId())
.setOrderId(order.getId())
.setNo(it.getNo())
.setWeight(BigDecimal.ZERO)
.setNum(BigDecimal.ZERO)
.setStation(it.getStation())
.setTray(it.getTray())).toList();
List<WmsStructuralPackageOrderTrayItem> items = new ArrayList<>();
trays.forEach(tray -> {
List<TrayItemVO> itemVOS = trayVO.getItems().stream()
.filter(it -> StrUtil.equals(it.getNo(), tray.getNo()))
.toList();
items.addAll(itemVOS.stream().map(it -> {
WmsStructuralPackageOrderTrayItem item = Convert.convert(WmsStructuralPackageOrderTrayItem.class, it);
item.setOrderId(order.getId());
item.setTrayId(tray.getId());
tray.setNum(tray.getNum().add(item.getShipmentNum()));
tray.setWeight(tray.getWeight().add(NumberUtil.mul(it.getWeight(), item.getShipmentNum())));
return item;
}).toList()
);
});
structuralPackageOrderTrayService.saveBatch(trays);
structuralPackageOrderTrayItemService.saveBatch(items);
return ApiResult.success();
}
}

View File

@ -0,0 +1,25 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.math.BigDecimal;
/**
* 修改钢构包订单托盘数量请求对象
*/
@Data
public class UpdatePackageTrayNumQO {
/**
* 钢构包订单ID
*/
@NotNull(message = "钢构包订单ID不能为空")
private Long orderId;
/**
* 托盘数量
*/
@NotNull(message = "托盘数量不能为空")
private BigDecimal trayNum;
}

View File

@ -8,6 +8,11 @@ import java.util.List;
@Data
public class DeliverStructuralPackageOrderTrayVO {
/**
* 订单ID
*/
private Long orderId;
/**
* 供应商代码
*/

View File

@ -20,4 +20,9 @@ public interface WmsStructuralPackageOrderTrayItemMapper extends BaseMapper<WmsS
List<DeliverStructuralPackageOrderTrayItemVO> getListByTrayId(Long id);
List<DeliverStructuralPackageOrderTrayItemSimpleVO> getSimpleListByTrayNo(String trayNo);
/**
* 根据订单ID获取物料项列表不依赖托盘关联
*/
List<DeliverStructuralPackageOrderTrayItemVO> getListByOrderId(Long orderId);
}

View File

@ -31,4 +31,9 @@ public interface IWmsStructuralPackageOrderTrayItemService extends IService<WmsS
List<DeliverStructuralPackageOrderTrayItemSimpleVO> getSimpleListByTrayNo(@Valid @NotBlank String trayNo);
List<WmsStructuralPackageOrderTrayItem> getListByTrayId(Long id);
/**
* 根据订单ID获取物料项列表不依赖托盘关联
*/
List<DeliverStructuralPackageOrderTrayItemVO> getListVOByOrderId(@Valid @NotNull Long orderId);
}

View File

@ -54,4 +54,9 @@ public class WmsStructuralPackageOrderTrayItemServiceImpl extends ServiceImpl<Wm
public List<WmsStructuralPackageOrderTrayItem> getListByTrayId(Long id) {
return lambdaQuery().eq(WmsStructuralPackageOrderTrayItem::getTrayId, id).list();
}
@Override
public List<DeliverStructuralPackageOrderTrayItemVO> getListVOByOrderId(Long orderId) {
return baseMapper.getListByOrderId(orderId);
}
}

View File

@ -21,4 +21,16 @@
where ot.no=#{trayNo}
order by oti.id
</select>
<select id="getListByOrderId" resultType="com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderTrayItemVO">
SELECT ROW_NUMBER() OVER (ORDER BY oti.id) AS "index",m.image,m.drawing_no,oti.*,
'' as "tray_no",0 as "state",
sp."no" as "package_no",sp."name" as "package_desc"
FROM wms_structural_package_order o
INNER JOIN wms_structural_package_order_tray_item oti ON o."id"=oti.order_id
LEFT JOIN wms_structural_package sp ON o.package_id=sp."id"
LEFT JOIN wms_material m ON oti.material_no=m."no" and oti."version"=m."version"
where o.id=#{orderId}
order by oti.id
</select>
</mapper>

View File

@ -83,7 +83,7 @@
</select>
<select id="getInfoByNo" resultType="com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderTrayVO">
SELECT o.external_order_no,o.row_no,sp."no" AS "package_no",sp."name" AS "package_desc",ot.num,us.supplier_name
SELECT ot.order_id,o.external_order_no,o.row_no,sp."no" AS "package_no",sp."name" AS "package_desc",ot.num,us.supplier_name
,us.supplier_code,ot.state
FROM wms_structural_package_order o
LEFT JOIN wms_workbench wb ON o.workbench_id=wb."id"