Compare commits
4 Commits
73c835f7ff
...
871aba36e5
| Author | SHA1 | Date |
|---|---|---|
|
|
871aba36e5 | |
|
|
3d474f3e7d | |
|
|
c9cc53b9cd | |
|
|
8a0074247d |
|
|
@ -343,7 +343,7 @@ public class NormalQMController extends BaseController {
|
|||
.setErfmg(code.getInspectionQty())
|
||||
.setErfmg1(code.getQualifiedQty())
|
||||
.setErfmg2(code.getUnqualifiedQty())
|
||||
.setEbelp(Integer.valueOf(code.getPoLineNumber()))
|
||||
.setEbelp(code.getPoLineNumber())
|
||||
.setMatnr(code.getItemCode())
|
||||
.setMeins(code.getUnit())
|
||||
.setCharg(code.getMaterialBatch())
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.nflg.wms.admin.controller;
|
|||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.lang.Pair;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
|
|
@ -15,9 +16,7 @@ import com.alibaba.excel.metadata.data.ImageData;
|
|||
import com.alibaba.excel.metadata.data.WriteCellData;
|
||||
import com.alibaba.excel.write.metadata.WriteSheet;
|
||||
import com.alibaba.excel.write.metadata.fill.FillConfig;
|
||||
import com.nflg.wms.admin.pojo.dto.PdfPageDTO;
|
||||
import com.nflg.wms.admin.pojo.dto.SAPMaterialInfoInOrderDTO;
|
||||
import com.nflg.wms.admin.pojo.dto.StructuralPackageOrderImportDTO;
|
||||
import com.nflg.wms.admin.pojo.dto.*;
|
||||
import com.nflg.wms.admin.repository.PackageMaterialScanRecordRepository;
|
||||
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
|
||||
import com.nflg.wms.admin.service.BinService;
|
||||
|
|
@ -35,7 +34,6 @@ import com.nflg.wms.common.pojo.PageData;
|
|||
import com.nflg.wms.common.pojo.document.PackageMaterialScanRecord;
|
||||
import com.nflg.wms.common.pojo.dto.PackageMaterialDTO;
|
||||
import com.nflg.wms.common.pojo.dto.SAPOrderDTO;
|
||||
import com.nflg.wms.common.pojo.dto.SAPSyncFromDTO;
|
||||
import com.nflg.wms.common.pojo.dto.StructuralPackageMaterialQRCodeContentDTO;
|
||||
import com.nflg.wms.common.pojo.qo.*;
|
||||
import com.nflg.wms.common.pojo.vo.*;
|
||||
|
|
@ -730,11 +728,15 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
*/
|
||||
@GetMapping("getInfoByDeliverOrderNo")
|
||||
public ApiResult<DeliverStructuralPackageOrderForPackageVO> getInfoByDeliverOrderNo(@Valid @RequestParam @NotBlank String orderNo) {
|
||||
WmsStructuralPackageDeliverOrder order = structuralPackageDeliverOrderService.lambdaQuery().eq(WmsStructuralPackageDeliverOrder::getNo, orderNo).one();
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||
VUtil.trueThrowBusinessError(Objects.equals(order.getState(), (short) 2)).throwMessage("该订单已收货");
|
||||
List<DeliverStructuralPackageOrderForPackageItemVO> datas = deliverStructuralPackageOrderService.getInfoByDeliverOrderNo(orderNo);
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(datas)).throwMessage("未找到数据");
|
||||
datas.forEach(it -> {
|
||||
it.setTrayNos(deliverStructuralPackageOrderTrayService.lambdaQuery()
|
||||
.select(WmsStructuralPackageOrderTray::getNo)
|
||||
.eq(WmsStructuralPackageOrderTray::getState, OrderState.InTransit.getState())
|
||||
.eq(WmsStructuralPackageOrderTray::getOrderId, it.getId())
|
||||
.list()
|
||||
.stream()
|
||||
|
|
@ -818,109 +820,139 @@ public class StructuralPackageOrderController extends BaseController {
|
|||
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接口查询到仓库为空");
|
||||
//创建上架任务
|
||||
VUtil.trueThrowBusinessError(!inTaskService.generateTask(List.of(new WmsInTaskItem()
|
||||
.setPoNum(order.getExternalOrderNo())
|
||||
.setPoLineNumber(order.getRowNo())
|
||||
.setLineNumber(String.valueOf(order.getId()))
|
||||
.setNoteNum(structuralPackageDeliverOrderService.getNoByOrderId(request.getId()))
|
||||
.setItemCode(order.getPackageNo())
|
||||
.setItemName(order.getPackageDesc())
|
||||
.setUnit(order.getUnit())
|
||||
.setIsQuality(false)
|
||||
.setKzkri(order.getKzkri())
|
||||
.setUnqualifiedQty(BigDecimal.ZERO)
|
||||
.setQualifiedQty(BigDecimal.valueOf(order.getNum()))
|
||||
.setInspectionQty(BigDecimal.valueOf(order.getNum()))
|
||||
.setFactory(dto.getWerks())
|
||||
.setDataStatus((short) 0)
|
||||
.setReceivedWarehouse(dto.getWarehouseNo())
|
||||
.setOperationUserId(UserUtil.getUserId())
|
||||
.setOperationUserName(UserUtil.getUserName())
|
||||
.setBatchNumber(order.getWorkbenchCode())
|
||||
.setSupplierNum(order.getSupplierCode())), (short) 1)
|
||||
BigDecimal num = BigDecimal.valueOf(order.getNum());
|
||||
Pair<Pair<String, String>, Pair<String, String>> pair = sapService.zwm3a17(new ZWM3A17DTO()
|
||||
.setEbeln(order.getExternalOrderNo())
|
||||
.setUsnam(UserUtil.getUserName())
|
||||
.setItem1(List.of(new ZWM3A17Item1DTO()
|
||||
.setEBELP(order.getRowNo())
|
||||
.setCHARG("")
|
||||
.setERFMG(num)
|
||||
.setKZKRI(dto.getKzkri())
|
||||
.setLGORT(request.getWarehouse())
|
||||
.setMATNR(order.getPackageNo())
|
||||
.setWERKS(order.getFactoryNo())
|
||||
.setMEINS(order.getUnit())
|
||||
)
|
||||
.throwMessage("创建上架任务失败");
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索上架任务列表(PDA使用)
|
||||
* @param no 任务单号或原始单号
|
||||
*/
|
||||
@GetMapping("searchIn")
|
||||
public ApiResult<List<InTaskVO>> searchIn(@Valid @RequestParam(required = false) String no) {
|
||||
return ApiResult.success(inTaskService.searchForIn(no));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取上架任务详情(PDA使用)
|
||||
* @param taskNo 上架任务单号
|
||||
*/
|
||||
@GetMapping("getInTaskInfo")
|
||||
public ApiResult<List<InTaskInfoVO>> getInTaskInfo(@Valid @RequestParam @NotBlank String taskNo) {
|
||||
WmsInTask task = inTaskService.getByNo(taskNo);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在");
|
||||
VUtil.trueThrowBusinessError(!Objects.equals(task.getTaskStatus(), (short) 0)).throwMessage("请勿重复上架");
|
||||
List<WmsInTaskItem> list = inTaskItemService.getListForStorage(taskNo);
|
||||
List<InTaskInfoVO> datas = Convert.toList(InTaskInfoVO.class, list);
|
||||
for (InTaskInfoVO item : datas) {
|
||||
SAPSyncFromDTO dto = sapService.zwm3A01(item.getFactory(), item.getReceivedWarehouse(), item.getItemCode());
|
||||
if (Objects.nonNull(dto)) {
|
||||
item.setBinNos(dto.getBinNos());
|
||||
}
|
||||
item.setTrayNos(structuralPackageDeliverOrderService.getTrayNos(task.getOrderNumber(), item.getItemCode()));
|
||||
}
|
||||
return ApiResult.success(datas);
|
||||
}
|
||||
|
||||
/**
|
||||
* 上架(PDA使用)
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@Transactional
|
||||
@PostMapping("materialStorage")
|
||||
public ApiResult<Void> materialStorage(@Valid @RequestBody @NotNull MaterialStorageQO request) {
|
||||
WmsInTask task = inTaskService.getByNo(request.getTaskNo());
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在");
|
||||
VUtil.trueThrowBusinessError(!Objects.equals(task.getTaskStatus(), (short) 0)).throwMessage("请勿重复上架");
|
||||
List<WmsInTaskItem> datas = inTaskItemService.getForIn(request);
|
||||
if (CollectionUtil.isNotEmpty(datas)) {
|
||||
datas.forEach(it -> {
|
||||
MaterialStorageItemQO qo = request.getItems().stream().filter(r -> StrUtil.equals(r.getMaterialNo(), it.getItemCode())).findFirst().get();
|
||||
it.setReceivedQty(it.getInspectionQty().subtract(qo.getNum()));
|
||||
it.setBins(StrUtil.join(",", qo.getBinNos()));
|
||||
it.setDataStatus((short) 1);
|
||||
it.setReceivedWarehouse(qo.getReceivedWarehouse());
|
||||
});
|
||||
inTaskItemService.updateBatchById(datas);
|
||||
inTaskService.updateState(request.getTaskNo());
|
||||
datas.stream()
|
||||
.filter(it -> request.getItems().stream().anyMatch(r -> StrUtil.equals(r.getMaterialNo(), it.getItemCode())))
|
||||
.collect(Collectors.groupingBy(WmsInTaskItem::getPoNum))
|
||||
.values()
|
||||
.forEach(it -> structuralPackageControllerService.materialStorage(it, request.getItems()));
|
||||
)
|
||||
.setItem2(List.of(
|
||||
new ZWM3A17Item2DTO()
|
||||
.setEBELP(order.getRowNo())
|
||||
.setSERNR("")
|
||||
.setFLAG("X")
|
||||
)
|
||||
)
|
||||
);
|
||||
if (StrUtil.equalsIgnoreCase(dto.getKzkri(), "X")) {
|
||||
sapService.zwm3a18(new ZWM3A18DTO()
|
||||
.setEbeln(order.getExternalOrderNo())
|
||||
.setUsnam(UserUtil.getUserName())
|
||||
.setMblnr(pair.getValue().getKey())
|
||||
.setMjahr(pair.getValue().getValue())
|
||||
.setItem1(List.of(
|
||||
new ZWM3A18Item1DTO()
|
||||
.setErfmg(num)
|
||||
.setErfmg1(num)
|
||||
.setErfmg2(BigDecimal.ZERO)
|
||||
.setEbelp(order.getRowNo())
|
||||
.setMatnr(order.getPackageNo())
|
||||
.setMeins(order.getUnit())
|
||||
.setCharg("")
|
||||
.setLgort(request.getWarehouse())
|
||||
.setSgtxt("")
|
||||
.setWerks(order.getFactoryNo())
|
||||
)
|
||||
)
|
||||
.setItem2(
|
||||
List.of(
|
||||
new ZWM3A17Item2DTO()
|
||||
.setEBELP(order.getRowNo())
|
||||
.setSERNR("")
|
||||
.setFLAG("X")
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索上架任务列表
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@PostMapping("searchTicket")
|
||||
public ApiResult<PageData<InTaskVO>> searchTicket(@Valid @RequestBody @NotNull InTaskSearchQO request) {
|
||||
return ApiResult.success(inTaskService.search(request));
|
||||
}
|
||||
// /**
|
||||
// * 搜索上架任务列表(PDA使用)
|
||||
// * @param no 任务单号或原始单号
|
||||
// */
|
||||
// @GetMapping("searchIn")
|
||||
// public ApiResult<List<InTaskVO>> searchIn(@Valid @RequestParam(required = false) String no) {
|
||||
// return ApiResult.success(inTaskService.searchForIn(no));
|
||||
// }
|
||||
|
||||
/**
|
||||
* 获取上架任务明细
|
||||
* @param taskNo 上架任务单号
|
||||
*/
|
||||
@GetMapping("getTicketItems")
|
||||
public ApiResult<List<WmsInTaskItem>> getTicketItems(@Valid @RequestParam @NotBlank String taskNo) {
|
||||
return ApiResult.success(inTaskItemService.getByNo(taskNo));
|
||||
}
|
||||
// /**
|
||||
// * 获取上架任务详情(PDA使用)
|
||||
// * @param taskNo 上架任务单号
|
||||
// */
|
||||
// @GetMapping("getInTaskInfo")
|
||||
// public ApiResult<List<InTaskInfoVO>> getInTaskInfo(@Valid @RequestParam @NotBlank String taskNo) {
|
||||
// WmsInTask task = inTaskService.getByNo(taskNo);
|
||||
// VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在");
|
||||
// VUtil.trueThrowBusinessError(!Objects.equals(task.getTaskStatus(), (short) 0)).throwMessage("请勿重复上架");
|
||||
// List<WmsInTaskItem> list = inTaskItemService.getListForStorage(taskNo);
|
||||
// List<InTaskInfoVO> datas = Convert.toList(InTaskInfoVO.class, list);
|
||||
// for (InTaskInfoVO item : datas) {
|
||||
// SAPSyncFromDTO dto = sapService.zwm3A01(item.getFactory(), item.getReceivedWarehouse(), item.getItemCode());
|
||||
// if (Objects.nonNull(dto)) {
|
||||
// item.setBinNos(dto.getBinNos());
|
||||
// }
|
||||
// item.setTrayNos(structuralPackageDeliverOrderService.getTrayNos(task.getOrderNumber(), item.getItemCode()));
|
||||
// }
|
||||
// return ApiResult.success(datas);
|
||||
// }
|
||||
|
||||
// /**
|
||||
// * 上架(PDA使用)
|
||||
// * @param request 请求参数
|
||||
// */
|
||||
// @Transactional
|
||||
// @PostMapping("materialStorage")
|
||||
// public ApiResult<Void> materialStorage(@Valid @RequestBody @NotNull MaterialStorageQO request) {
|
||||
// WmsInTask task = inTaskService.getByNo(request.getTaskNo());
|
||||
// VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在");
|
||||
// VUtil.trueThrowBusinessError(!Objects.equals(task.getTaskStatus(), (short) 0)).throwMessage("请勿重复上架");
|
||||
// List<WmsInTaskItem> datas = inTaskItemService.getForIn(request);
|
||||
// if (CollectionUtil.isNotEmpty(datas)) {
|
||||
// datas.forEach(it -> {
|
||||
// MaterialStorageItemQO qo = request.getItems().stream().filter(r -> StrUtil.equals(r.getMaterialNo(), it.getItemCode())).findFirst().get();
|
||||
// it.setReceivedQty(it.getInspectionQty().subtract(qo.getNum()));
|
||||
// it.setBins(StrUtil.join(",", qo.getBinNos()));
|
||||
// it.setDataStatus((short) 1);
|
||||
// it.setReceivedWarehouse(qo.getReceivedWarehouse());
|
||||
// });
|
||||
// inTaskItemService.updateBatchById(datas);
|
||||
// inTaskService.updateState(request.getTaskNo());
|
||||
// datas.stream()
|
||||
// .filter(it -> request.getItems().stream().anyMatch(r -> StrUtil.equals(r.getMaterialNo(), it.getItemCode())))
|
||||
// .collect(Collectors.groupingBy(WmsInTaskItem::getPoNum))
|
||||
// .values()
|
||||
// .forEach(it -> structuralPackageControllerService.materialStorage(it, request.getItems()));
|
||||
// }
|
||||
// return ApiResult.success();
|
||||
// }
|
||||
|
||||
// /**
|
||||
// * 搜索上架任务列表
|
||||
// * @param request 请求参数
|
||||
// */
|
||||
// @PostMapping("searchTicket")
|
||||
// public ApiResult<PageData<InTaskVO>> searchTicket(@Valid @RequestBody @NotNull InTaskSearchQO request) {
|
||||
// return ApiResult.success(inTaskService.search(request));
|
||||
// }
|
||||
|
||||
// /**
|
||||
// * 获取上架任务明细
|
||||
// * @param taskNo 上架任务单号
|
||||
// */
|
||||
// @GetMapping("getTicketItems")
|
||||
// public ApiResult<List<WmsInTaskItem>> getTicketItems(@Valid @RequestParam @NotBlank String taskNo) {
|
||||
// return ApiResult.success(inTaskItemService.getByNo(taskNo));
|
||||
// }
|
||||
|
||||
/**
|
||||
* 导出钢构件订单导入模板
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ public class ZWM3A18Item1DTO {
|
|||
/**
|
||||
* 采购凭证的项目编号
|
||||
*/
|
||||
private Integer ebelp;
|
||||
private String ebelp;
|
||||
|
||||
/**
|
||||
* 物料号
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ public class SAPSyncParamsDTO {
|
|||
private String lbprt;
|
||||
|
||||
/**
|
||||
* 是否质检
|
||||
* 是否质检,为X时是质检物料
|
||||
*/
|
||||
private String kzkri;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
|
@ -16,7 +17,19 @@ public class StructuralPackageOrderReceiveQO {
|
|||
private Long id;
|
||||
|
||||
/**
|
||||
* 该订单下包含的托盘号
|
||||
* 上架仓库
|
||||
*/
|
||||
@NotBlank
|
||||
private String warehouse;
|
||||
|
||||
/**
|
||||
* 储位列表
|
||||
*/
|
||||
@NotEmpty
|
||||
private List<String> binNos;
|
||||
|
||||
/**
|
||||
* 包含的托盘号
|
||||
*/
|
||||
@NotEmpty
|
||||
private List<String> trayNos;
|
||||
|
|
|
|||
|
|
@ -7,18 +7,11 @@ import java.math.BigDecimal;
|
|||
@Data
|
||||
public class BinInventoryVO {
|
||||
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 储位编码
|
||||
*/
|
||||
private String no;
|
||||
|
||||
/**
|
||||
* 物料编码
|
||||
*/
|
||||
private String materialNo;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -164,4 +164,9 @@ public class DeliverStructuralPackageOrderVO {
|
|||
* 是否存在缺货零件
|
||||
*/
|
||||
private Boolean quehuo;
|
||||
|
||||
/**
|
||||
* 工厂编号
|
||||
*/
|
||||
private String factoryNo;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public interface WmsStructuralPackageDeliverOrderMapper extends BaseMapper<WmsSt
|
|||
|
||||
String getNoByOrderId(Long id);
|
||||
|
||||
boolean allReceived(Long deliverId);
|
||||
boolean hasNotReceived(Long deliverId);
|
||||
|
||||
List<DeliverStructuralPackageOrderVO> getInfo(Long id);
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,6 @@ import java.util.Optional;
|
|||
* <p>
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2025
|
||||
*/
|
||||
|
|
@ -54,7 +53,7 @@ public class WmsStructuralPackageDeliverOrderServiceImpl extends ServiceImpl<Wms
|
|||
public void updateStateByOrderId(Long orderId) {
|
||||
WmsStructuralPackageDeliverOrderMap map = wmsStructuralPackageDeliverOrderMapService.lambdaQuery().eq(WmsStructuralPackageDeliverOrderMap::getOrderId, orderId).one();
|
||||
lambdaUpdate()
|
||||
.set(WmsStructuralPackageDeliverOrder::getState, baseMapper.allReceived(map.getDeliverId())?2:1)
|
||||
.set(WmsStructuralPackageDeliverOrder::getState, baseMapper.hasNotReceived(map.getDeliverId()) ? 1 : 2)
|
||||
.set(WmsStructuralPackageDeliverOrder::getUpdateTime, LocalDateTime.now())
|
||||
.set(WmsStructuralPackageDeliverOrder::getUpdateBy, UserUtil.getUserName())
|
||||
.eq(WmsStructuralPackageDeliverOrder::getId, map.getDeliverId())
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
</select>
|
||||
|
||||
<select id="getInventory" resultType="com.nflg.wms.common.pojo.vo.BinInventoryVO">
|
||||
SELECT b."no",COALESCE(SUM(i.num),0)
|
||||
SELECT b."no",COALESCE(SUM(i.num),0) as num
|
||||
FROM wms_bin b
|
||||
LEFT JOIN wms_storage_bin sb ON sb.bin_id=b."id"
|
||||
LEFT JOIN wms_storage s ON s."id"=sb.storage_id
|
||||
|
|
|
|||
|
|
@ -58,11 +58,11 @@
|
|||
where pdom.order_id=#{id}
|
||||
</select>
|
||||
|
||||
<select id="allReceived" resultType="boolean">
|
||||
<select id="hasNotReceived" resultType="boolean">
|
||||
SELECT EXISTS
|
||||
(
|
||||
SELECT
|
||||
om.*
|
||||
1
|
||||
FROM
|
||||
wms_structural_package_deliver_order_map om
|
||||
INNER JOIN wms_structural_package_order_tray ot ON om.order_id = ot.order_id
|
||||
|
|
|
|||
|
|
@ -50,12 +50,13 @@
|
|||
|
||||
<select id="getInfo" resultType="com.nflg.wms.common.pojo.vo.DeliverStructuralPackageOrderVO">
|
||||
SELECT o.*,m.no||wb."no" AS "workbench_code",us.supplier_code,us.supplier_name,sp.order_no AS "package_order_no"
|
||||
,sp."no" AS "package_no",sp."name" AS "package_desc",m."no" AS "model_no"
|
||||
,sp."no" AS "package_no",sp."name" AS "package_desc",m."no" AS "model_no",di.code AS "factory_code"
|
||||
FROM wms_structural_package_order o
|
||||
LEFT JOIN wms_workbench wb ON o.workbench_id=wb."id"
|
||||
LEFT JOIN user_supplier us ON o.supplier_id=us.id
|
||||
LEFT JOIN wms_structural_package sp ON o.package_id=sp."id"
|
||||
LEFT JOIN wms_model m on o.model_id=m."id"
|
||||
left join dictionary_item di on di.id=o.factory_id
|
||||
where o.id=#{id}
|
||||
order by id desc
|
||||
</select>
|
||||
|
|
|
|||
Loading…
Reference in New Issue