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/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> 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/feign/ApsProduceClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/ApsProduceClient.java index 6d1e50d49..a049f07f9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/ApsProduceClient.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/ApsProduceClient.java @@ -48,7 +48,7 @@ public class ApsProduceClient implements IApsProduceClient { // 获取上1小时开始、结束时间 Date startTime = Date.from(LocalDateTime.now().minusHours(1).withMinute(0).withSecond(0).withNano(0).atZone(ZoneId.systemDefault()).toInstant()); Date endTime = Date.from(LocalDateTime.now().minusHours(1).withMinute(59).withSecond(59).withNano(999_999_999).atZone(ZoneId.systemDefault()).toInstant()); - List 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/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 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 { @@ -620,7 +618,8 @@ public class PdaSaveServiceImpl 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 { 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/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 + + + + + + + + + + + + + + + + + + + + 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..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 @@ -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"); // 工单号 @@ -162,9 +166,8 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl