From 10d86aa74f50336a469385be2b2d14410438a234 Mon Sep 17 00:00:00 2001 From: tjx <t2856754968@163.com> Date: 星期二, 24 六月 2025 18:22:44 +0800 Subject: [PATCH] 更改 --- src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java | 80 +++++++++++++++++++++++++++++++++++++++- 1 files changed, 78 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java b/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java index 22fd36d..3b53c96 100644 --- a/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java +++ b/src/main/java/com/gs/xky/service/Impl/DeliveryNoticeServiceImpl.java @@ -10,10 +10,15 @@ import com.gs.xky.dto.XkyDetail; import com.gs.xky.entity.DeliveryNotice; import com.gs.xky.entity.DeliveryNoticeDetail; +import com.gs.xky.entity.MesInvItemArn; import com.gs.xky.mapper.DeliveryNoticeMapper; import com.gs.xky.service.DeliveryNoticeDetailService; import com.gs.xky.service.DeliveryNoticeService; +import com.gs.xky.service.MesInvItemArnService; import lombok.RequiredArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -32,8 +37,9 @@ public class DeliveryNoticeServiceImpl extends ServiceImpl<DeliveryNoticeMapper, DeliveryNotice> implements DeliveryNoticeService { + private static final Logger log = LoggerFactory.getLogger(DeliveryNoticeServiceImpl.class); private final DeliveryNoticeDetailService detailService; - + private final MesInvItemArnService invItemArnService; @Override public boolean saveDeliveryNotice(XkyDetail xkyDetail) { @@ -92,8 +98,78 @@ public void callPdaReceiptBtn(String inStr, String result) { baseMapper.callPdaReceiptBtn(inStr, result); } -} + + @Override + public Integer processMesInvItemArnStatus(String factory, String company, String userCode, Long id) { + Integer poResult = 1; + String poText = ""; + + // 璋冪敤瀛樺偍杩囩▼ + baseMapper.callPrcMesInvItemArnStatus22(factory, company, userCode, id, poResult, poText); + + // 杩斿洖缁撴灉 + return poResult; + } + + // + @Override + public void processMesInvItemArnStatusAsync(List<MesInvItemArn> itemArnMinus) { + if (itemArnMinus == null || itemArnMinus.isEmpty()) { + return; + } + // 璁板綍寮�濮嬪鐞嗙殑鏃ュ織 + log.info("銆恜rocessMesInvItemArnStatusAsync銆戝紑濮嬪鐞唟}鏉℃暟鎹�", itemArnMinus.size()); + // 鍒嗘壒澶勭悊锛屾瘡鎵规渶澶氬鐞�20鏉℃暟鎹� + int batchSize = 20; + int totalSize = itemArnMinus.size(); + int batchCount = (totalSize + batchSize - 1) / batchSize; + + for (int i = 0; i < batchCount; i++) { + int fromIndex = i * batchSize; + int toIndex = Math.min((i + 1) * batchSize, totalSize); + List<MesInvItemArn> batchItems = itemArnMinus.subList(fromIndex, toIndex); + + log.info("銆恜rocessMesInvItemArnStatusAsync銆戝鐞嗙{}鎵规暟鎹紝鑼冨洿锛歿}-{}", i + 1, fromIndex, toIndex); + + // 寮傛澶勭悊姣忔壒鏁版嵁 + processAsyncBatch(batchItems); + } + + log.info("銆恜rocessMesInvItemArnStatusAsync銆戝叏閮ㄦ暟鎹鐞嗘彁浜ゅ畬鎴�"); + } + + /** + * 寮傛澶勭悊涓�鎵筂esInvItemArn鏁版嵁 + * + * @param batchItems 褰撳墠鎵规鐨勬暟鎹� + */ + @Async("taskExecutor") + public void processAsyncBatch(List<MesInvItemArn> batchItems) { + log.info("銆恜rocessAsyncBatch銆戝紓姝ュ鐞唟}鏉℃暟鎹紑濮�", batchItems.size()); + processBatch(batchItems); + log.info("銆恜rocessAsyncBatch銆戝紓姝ュ鐞唟}鏉℃暟鎹畬鎴�", batchItems.size()); + } + + /** + * 鎵归噺澶勭悊MesInvItemArn鏁版嵁 + * + * @param batchItems 褰撳墠鎵规鐨勬暟鎹� + */ + private void processBatch(List<MesInvItemArn> batchItems) { + // 閬嶅巻姣忎釜 itemArn + batchItems.forEach(itemArn -> { + try { + // 澶勭悊姣忎釜 itemArn + Integer result = processMesInvItemArnStatus("1000", "1000", "PL017", itemArn.getId()); + log.info("銆恜rocessBatch銆戝鐞唅temArn: {}, 缁撴灉: {}", itemArn.getId(), result); + } catch (Exception e) { + // 澶勭悊寮傚父锛岃褰曡缁嗘棩蹇� + log.error("銆恜rocessBatch銆戝鐞唅temArn: {} 寮傚父: {}", itemArn.getId(), e.getMessage(), e); + } + }); + } +} \ No newline at end of file -- Gitblit v1.9.3