From 593051e6f7380ce2d6563038df8d00e124de53b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B6=9B?= Date: Fri, 15 May 2026 19:27:18 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/order/pojo/entity/YieldOrder.java | 6 ++ .../desk/produce/pojo/vo/LoadSubOrderVO.java | 4 +- .../desk/produce/pojo/vo/SaveSubOrderVo.java | 10 ++ .../produce/controller/PdaSaveController.java | 12 ++- .../controller/ReworkProcessController.java | 1 + .../desk/produce/service/IPdaSaveService.java | 6 +- .../service/impl/PdaLoadServiceImpl.java | 26 +++--- .../service/impl/PdaSaveServiceImpl.java | 91 ++++++++++++++++++- .../service/impl/WorkOrderServiceImpl.java | 32 ++++--- 9 files changed, 148 insertions(+), 40 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/SaveSubOrderVo.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java index 6f975cd14..af6fe1e7b 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java @@ -361,6 +361,12 @@ public class YieldOrder extends BaseEntity { @TableField(value = "PRODUCE_BOOL") private Boolean produceBool; + /** + * 子件齐套时间 + */ +// @TableField(value = "PRODUCE_BOOL_DATE") + private Date produceBoolDate; + /** * 使用部门代码 */ diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/LoadSubOrderVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/LoadSubOrderVO.java index 9fba3c11a..5d8248762 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/LoadSubOrderVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/LoadSubOrderVO.java @@ -4,12 +4,12 @@ import lombok.Data; @Data public class LoadSubOrderVO { - private String wpId; + private Long wpId; private String woCode; private String partCode; private String cardNo; private String batchNo; - private String makeQty; + private Double makeQty; private String ppsName; private String tsName; diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/SaveSubOrderVo.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/SaveSubOrderVo.java new file mode 100644 index 000000000..e245712ef --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/SaveSubOrderVo.java @@ -0,0 +1,10 @@ +package org.springblade.desk.produce.pojo.vo; + +import lombok.Data; + +@Data +public class SaveSubOrderVo { + private Long wpId; + private Long shId; + private Long cslId; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java index b767fcf69..cd0514d72 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PdaSaveController.java @@ -17,10 +17,7 @@ import org.springblade.desk.energy.pojo.entity.BsEpciuPatrolInspectionEntity; import org.springblade.desk.oldv1.constant.Constant; import org.springblade.desk.oldv1.pojo.ResultInfo; import org.springblade.desk.produce.pojo.dto.DeviceBindDTO; -import org.springblade.desk.produce.pojo.vo.MacToolUseVO; -import org.springblade.desk.produce.pojo.vo.SjEcBingCardVo; -import org.springblade.desk.produce.pojo.vo.UnBingDeviceVo; -import org.springblade.desk.produce.pojo.vo.UnBingVo; +import org.springblade.desk.produce.pojo.vo.*; import org.springblade.desk.produce.service.IPdaSaveService; import org.springframework.web.bind.annotation.*; @@ -178,4 +175,11 @@ public class PdaSaveController { pdaSaveService.saveEpDosingRec(epDosingRec); return R.success(); } + + @Operation(summary = "子件入库保存") + @PostMapping("/saveSubOrder") + public R saveSubOrder(@RequestBody SaveSubOrderVo subOrder) { + pdaSaveService.saveSubOrder(subOrder); + return R.success(); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ReworkProcessController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ReworkProcessController.java index c97113fb4..1bac61e3f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ReworkProcessController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ReworkProcessController.java @@ -44,6 +44,7 @@ public class ReworkProcessController extends BladeController { public R> page(ReworkProcessDTO prReworkProcess, Query query) { IPage iPage = Condition.getPage(query); List process = erpDataProduceClient.loadReworkOrder(prReworkProcess.getReworkCode(), prReworkProcess.getPartCode(), prReworkProcess.getBatchNo(), query.getCurrent(), query.getSize()).getData(); + process.forEach(processVO -> processVO.setReqqty(processVO.getAmount().toString())); iPage.setRecords(process); int size = erpDataProduceClient.loadReworkOrderSize(prReworkProcess.getReworkCode(), prReworkProcess.getPartCode(), prReworkProcess.getBatchNo()).getData(); iPage.setTotal(size); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java index c10eabf83..def4f0032 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java @@ -7,10 +7,7 @@ import org.springblade.desk.produce.pojo.dto.DeviceBindDTO; import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO; import org.springblade.desk.produce.pojo.entity.WorkPlan; -import org.springblade.desk.produce.pojo.vo.MacToolUseVO; -import org.springblade.desk.produce.pojo.vo.SjEcBingCardVo; -import org.springblade.desk.produce.pojo.vo.UnBingDeviceVo; -import org.springblade.desk.produce.pojo.vo.UnBingVo; +import org.springblade.desk.produce.pojo.vo.*; import java.util.List; @@ -72,4 +69,5 @@ public interface IPdaSaveService extends BaseService { void saveEpDosingRec(BsDosingRecEntity epDosingRec); + void saveSubOrder(SaveSubOrderVo subOrder); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java index 43f893805..2bbdf6be4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java @@ -182,30 +182,32 @@ public class PdaLoadServiceImpl extends BaseServiceImpl yoList = yieldOrderService.listByFatherYoId(yo.getFatherYoId()); + boolean bool = true; + if (yoList != null && !yoList.isEmpty()) { + for (YieldOrder item : yoList) { + if (item.getStatus() < YieldOrder.CUR_STATUS_COMPLETED) { + bool = false; + break; + } + } + } + //此处标记父级订单已齐套 + if (yo.getFatherYoId() != null) { + YieldOrder fatherYo = yieldOrderService.getById(yo.getFatherYoId()); + if (fatherYo != null) { + if (bool) { + fatherYo.setProduceBool(Boolean.TRUE); + fatherYo.setProduceBoolDate(new Date()); + yieldOrderService.updateById(fatherYo); + } + } + } + //获取到订单入库的库存 +// Object[] obj = stRealtimeStockWebService.queryByShIdAndCslId(yo.getPartCode(), yo.getYpQty(), shId, cslId); +// if (obj != null) { +// //像仓库发起班组提请 +// List list = new ArrayList<>(); +// StClassRequest stClassRequest = new StClassRequest(); +// stClassRequest.setRlsId(Long.valueOf(obj[0].toString())); +// stClassRequest.setGoodsId(Long.valueOf(obj[1].toString())); +// stClassRequest.setGoodsCode(obj[2].toString()); +// stClassRequest.setGoodsName(obj[3].toString()); +// stClassRequest.setMemo(wo.getWoCode()); +// stClassRequest.setQuantity(Double.valueOf(wo.getMakeQty())); +// stClassRequest.setCrCode(stClassRequestService.nextCode(null)); +// stClassRequest.setCrMan(curUserInfo); +// stClassRequest.setCrDate(new Date()); +// stClassRequest.setPfDepartment(curUserInfo.getPfDepartment()); +// stClassRequest.setApprovalStatus(IFlowBusinessBean.STATUS_CHECKED); +// stClassRequest.setCreateMan(curUserInfo); +// stClassRequest.setCreateTime(new Date()); +// stClassRequest.setCurStatus(StClassRequest.CURSTATUS_RELEASED); +// stClassRequest.setSpecial(Boolean.FALSE); +// list.add(stClassRequest); +// stClassRequestService.addOrEdit(list, null, curUserInfo); +// } + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index 8f1cd5f67..81b30e976 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -1315,8 +1315,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl Date: Fri, 15 May 2026 19:50:47 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/mapper/StGlassCakeOutMapper.java | 2 + .../wms/mapper/StGlassCakeOutMapper.xml | 7 ++ .../impl/StGlassCakeOutServiceImpl.java | 72 ++++++++++--------- 3 files changed, 47 insertions(+), 34 deletions(-) diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.java index bcb4104ba..e8d218c3a 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.java @@ -51,5 +51,7 @@ public interface StGlassCakeOutMapper extends BaseMapper { YieldOrder getByYoCode(String cardNo); YieldOrder getByYieldOrder(String yoCode); + + List getYieldOrderList(Long id, String yieldType); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.xml index 151810ba3..d6026e633 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.xml @@ -216,4 +216,11 @@ WHERE YO_CODE = #{yoCode} + + diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java index e0267f678..89025cbd4 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java @@ -10,7 +10,6 @@ import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.BladeUser; import org.springblade.desk.dashboard.feign.IPartClient; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; -import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.wms.excel.StGlassCakeOutExcel; import org.springblade.wms.mapper.StGlassCakeOutMapper; @@ -26,7 +25,6 @@ import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.util.*; -import java.util.stream.Collectors; /** * @version 1.0 @@ -86,41 +84,47 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl partRelationEntityList = partClient.getSubPart(partOne.getId()); + List yieldOrderList = baseMapper.getYieldOrderList(faYieldOrder.getId(),"12003"); List glassCakePartList = new ArrayList<>(); - if (!CollectionUtils.isEmpty(partRelationEntityList)) { - // 步骤1:提取所有非空的childPartId并去重(避免null和重复ID,减少查询压力) - List childPartIdList = partRelationEntityList.stream() - .map(DsPartRelationEntity::getChildPartId) // 提取子件ID - .filter(Objects::nonNull) // 过滤null的ID - .distinct() // 去重,避免重复查询 - .collect(Collectors.toList()); - - // 步骤2:批量查询DS_PART表(一次SQL,性能最优) - if (!CollectionUtils.isEmpty(childPartIdList)) { - // 调用dsPartService的批量查询方法(根据ID列表查DS_PART) - List allChildPartList = partClient.batchParts(childPartIdList); - - // 步骤3:筛选出IS_CLASS_CAKE为"玻璃饼"的记录(核心过滤) - if (!CollectionUtils.isEmpty(allChildPartList)) { - glassCakePartList = allChildPartList.stream() - .filter(part -> "1".equals(part.getIsGlassCake())) - .collect(Collectors.toList()); - } + for (YieldOrder order : yieldOrderList) { + DsPartEntity partOne = partClient.getPart(order.getPartCode(),order.getPartVersion()); + if (partOne == null) { + throw new RuntimeException("根据零件编号【" + order.getPartCode() + "】未查询到零件信息"); } + glassCakePartList.add(partOne); } +// List partRelationEntityList = partClient.getSubPart(partOne.getId()); +// +// List glassCakePartList = new ArrayList<>(); +// if (!CollectionUtils.isEmpty(partRelationEntityList)) { +// // 步骤1:提取所有非空的childPartId并去重(避免null和重复ID,减少查询压力) +// List childPartIdList = partRelationEntityList.stream() +// .map(DsPartRelationEntity::getChildPartId) // 提取子件ID +// .filter(Objects::nonNull) // 过滤null的ID +// .distinct() // 去重,避免重复查询 +// .collect(Collectors.toList()); +// +// // 步骤2:批量查询DS_PART表(一次SQL,性能最优) +// if (!CollectionUtils.isEmpty(childPartIdList)) { +// // 调用dsPartService的批量查询方法(根据ID列表查DS_PART) +// List allChildPartList = partClient.batchParts(childPartIdList); +// +// // 步骤3:筛选出IS_CLASS_CAKE为"玻璃饼"的记录(核心过滤) +// if (!CollectionUtils.isEmpty(allChildPartList)) { +// glassCakePartList = allChildPartList.stream() +// .filter(part -> "1".equals(part.getIsGlassCake())) +// .collect(Collectors.toList()); +// } +// } +// } + // WorkOrder workOrder = new WorkOrder(); // workOrder.setCardNo(dto.getCardNo()); // 卡号(与DTO的cardNo一致) // workOrder.setWoCode("WO-202602110001"); // 工单号 @@ -189,7 +193,7 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl Date: Fri, 15 May 2026 21:19:56 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/service/impl/StGlassCakeOutServiceImpl.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java index 89025cbd4..b7b6c9126 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java @@ -166,9 +166,8 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl Date: Sat, 16 May 2026 09:37:54 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/order/service/impl/PlateGoodsRecordServiceImpl.java | 1 + .../desk/order/service/impl/YieldOrderServiceImpl.java | 1 + .../org/springblade/desk/produce/feign/ApsProduceClient.java | 2 +- .../desk/produce/service/impl/PdaSaveServiceImpl.java | 5 +++-- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java index 451669946..bb08a2ce0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/PlateGoodsRecordServiceImpl.java @@ -394,6 +394,7 @@ public class PlateGoodsRecordServiceImpl extends BaseServiceImpl orders = yieldOrderService.list(Wrappers.lambdaQuery().eq(YieldOrder::getValidationResult, YieldOrderEnum.VALIDATION_RESULT_PASS.getCode()).between(YieldOrder::getUpdateTime, startTime, endTime)); + List orders = yieldOrderService.list(Wrappers.lambdaQuery().eq(YieldOrder::getValidationResult, YieldOrderEnum.VALIDATION_RESULT_PASS.getCode()).between(YieldOrder::getValidationTime, startTime, endTime)); log.info("待自动接收订单数量:{}", orders.size()); for (YieldOrder yieldOrder : orders) { try { diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java index 00183e180..fe0e24c34 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java @@ -534,7 +534,7 @@ public class PdaSaveServiceImpl extends BaseServiceImpl rpList = dsPartService.selectReworkPartCraft(rr.getPrtno(), rr.getRedono(), rr.getSplcode(), String.valueOf(rr.getSeqno())); if (CollectionUtils.isEmpty(rpList)) { - //修改erp返工单工艺状态为无工艺 + // 修改erp返工单工艺状态为无工艺 log.info("修改erp返工单工艺状态为无工艺,返工单号{}", rr.getRedono()); return erpDataProduceClient.receiveOrder(rr.getRedono(), rr.getSeqno(), rr.getPrtno(), rr.getSplcode(), rr.getAmount(), rr.getReqqty(), AuthUtil.getUserName(), 0).getData(); } else { @@ -618,7 +618,8 @@ public class PdaSaveServiceImpl extends BaseServiceImpl Date: Sat, 16 May 2026 10:15:46 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/mapper/StRealtimeStockMapper.xml | 53 +++++++++++++++++-- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.xml index 52499884f..5dc27c1ed 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.xml @@ -609,11 +609,34 @@ -- 原有:左连接锁料表,保留工单关联(必须加,否则查错锁料量) LEFT JOIN ST_REALTIME_STOCK_LOCK l ON s.id = l.rls_id -- 调整:goods_code从关联的STGOODS表匹配,而非库存表 - WHERE s.print_mark = #{isPrint} - AND s.powder_weight = #{powderWeight} - AND s.material_no = #{materialNo} - AND s.thickness = #{thickness} - AND g.goods_code = #{goodsCode} + WHERE g.goods_code = #{goodsCode} + + AND s.material_no IS NULL + + + AND s.material_no = #{materialNo} + + + + AND s.powder_weight IS NULL + + + AND s.powder_weight = #{powderWeight} + + + + AND s.thickness IS NULL + + + AND s.thickness = #{thickness} + + + + AND s.print_mark IS NULL + + + AND s.print_mark = #{isPrint} + -- 原有:按可用量(库存数量-已占用数量)倒序,空占用按0计算 ORDER BY (s.quantity - NVL(l.occupy_quantity, 0)) DESC ) t @@ -648,5 +671,25 @@ AND s.is_deleted = 0 AND g.is_deleted = 0 + + + + + + + + + + + + + + + + + + + +