From d8dd683271bffd641084193c6d8ef0b2cffa008d Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期三, 14 五月 2025 09:13:48 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/devlop' into devlop --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java | 105 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 93 insertions(+), 12 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java index 7ab439d..d1aa2c0 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java @@ -8,19 +8,14 @@ import com.vincent.rsf.server.api.entity.dto.PoItemsDto; import com.vincent.rsf.server.api.service.ReceiveMsgService; import com.vincent.rsf.server.api.service.ReportMsgService; +import com.vincent.rsf.server.common.utils.DateUtils; import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams; import com.vincent.rsf.server.manager.controller.params.BatchUpdateParam; -import com.vincent.rsf.server.manager.entity.AsnOrderItem; -import com.vincent.rsf.server.manager.entity.AsnOrderItemLog; -import com.vincent.rsf.server.manager.entity.AsnOrderLog; +import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.AsnExceStatus; +import com.vincent.rsf.server.manager.enums.POExceStatus; import com.vincent.rsf.server.manager.mapper.AsnOrderMapper; -import com.vincent.rsf.server.manager.entity.AsnOrder; -import com.vincent.rsf.server.manager.mapper.PurchaseMapper; -import com.vincent.rsf.server.manager.service.AsnOrderItemLogService; -import com.vincent.rsf.server.manager.service.AsnOrderItemService; -import com.vincent.rsf.server.manager.service.AsnOrderLogService; -import com.vincent.rsf.server.manager.service.AsnOrderService; +import com.vincent.rsf.server.manager.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.mapper.SerialRuleMapper; @@ -49,8 +44,7 @@ private ReceiveMsgService receiveMsgService; @Autowired private ReportMsgService reportMsgService; - @Resource - private PurchaseMapper purchaseMapper; + @Autowired private AsnOrderItemService asnOrderItemService; @Autowired @@ -59,6 +53,12 @@ private AsnOrderItemLogService asnOrderItemLogService; @Resource private SerialRuleMapper serialRuleMapper; + @Autowired + private MatnrService matnrService; + @Autowired + private PurchaseService purchaseService; + @Autowired + private PurchaseItemService purchaseItemService; @Override public boolean notifyInspect(List<AsnOrder> orders) { @@ -69,7 +69,7 @@ if (asnIds.isEmpty()) { throw new CoolException("ASN鍗曟嵁涓嶈兘涓虹┖锛侊紒"); } - List<PoItemsDto> items = purchaseMapper.poList(asnIds); + List<PoItemsDto> items = purchaseService.poList(asnIds); if (items.isEmpty()) { throw new CoolException("鐗╂枡鎵�灞為噰璐崟鎹笉瀛樺湪锛侊紒"); } @@ -247,6 +247,87 @@ } /** + * @author Ryan + * @date 2025/5/13 + * @description: 鏍规嵁PO鍗曞垱寤篈SN鍗� + * @version 1.0 + */ + @Override + public R createByPo(List<Long> ids) { + //鑾峰彇鏈敓鎴怉SN鍗曟嵁 + List<Purchase> purchases = purchaseService.list(new LambdaQueryWrapper<Purchase>().in(Purchase::getId, ids)); + //鐢熸垚ASN鍗曟嵁 + purchases.forEach(purchase -> { + if (!Objects.isNull(purchase.getStartTime())) { + //鍒ゆ柇璧峰鏃堕棿鏄惁澶т簬褰撳墠鏃堕棿 + if (DateUtils.compareDate(new Date(), purchase.getStartTime())) { + return; + } + } + List<PurchaseItem> items = purchaseItemService.list(new LambdaQueryWrapper<PurchaseItem>().eq(PurchaseItem::getPurchaseId, purchase.getId())); + if (items.isEmpty()) { + throw new CoolException("瀛愬垪琛ㄦ暟鎹负绌猴紝璇锋煡璇O鍗曟槸鍚︽纭綍鍏ワ紒锛�"); + } + AsnOrder order = new AsnOrder(); + //鏍规嵁缂栫爜瑙勫垯鐢熸垚ASN鍗曞彿 + String code = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, purchase); + order.setAnfme(purchase.getAnfme()) + .setCode(code) + .setArrTime(purchase.getPreArr()) + .setQty(purchase.getQty()) + .setPoId(purchase.getId()) + .setPoCode(purchase.getCode()); + if (!this.save(order)) { + throw new CoolException("ASN鍗曟嵁淇濆瓨澶辫触锛侊紒"); + } + List<AsnOrderItem> orderItems = new ArrayList<>(); + items.forEach(item -> { + AsnOrderItem orderItem = new AsnOrderItem(); + Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, item.getMatnrCode())); + if (Objects.isNull(matnr)) { + throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶇墿鏂欎笉瀛樺湪!!"); + } + String trackCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, item); + if (StringUtils.isBlank(trackCode)) { + throw new CoolException("鍗曟嵁璺熻釜鐮佺敓鎴愬け璐ワ細璇锋鏌ャ�宻ys_asn_mantr_label銆嶆槸鍚﹂厤缃畬鎴愶紒锛�"); + } +// String barcode = code + matnr.getCode(); + orderItem.setAnfme(item.getAnfme()) + .setAsnId(order.getId()) + .setQty(item.getAnfme()) + .setSplrName(item.getSplrName()) + .setAsnCode(code) + .setSplrBatch(item.getSplrBatch()) + .setSplrCode(item.getSplrCode()) + .setPoDetlId(item.getId()) + .setPlatItemId(item.getPlatItemId()) + .setTrackCode(trackCode) + .setPoCode(purchase.getCode()) + .setPurQty(item.getAnfme()) + .setPurUnit(item.getUnit()) + .setMatnrCode(matnr.getCode()) + .setMaktx(matnr.getName()) + .setMatnrId(matnr.getId()); + orderItems.add(orderItem); + }); + if (!asnOrderItemService.saveBatch(orderItems)) { + throw new CoolException(("Asn鍗曟嵁鏄庣粏淇濆瓨澶辫触锛侊紒")); + } + + //浠诲姟鎵ц瀹屾垚锛屼慨鏀瑰凡瀹屾垚鏁伴噺鍜孭O鍗曟墽琛岀姸鎬� + purchase.setQty(purchase.getAnfme()) + .setExceStatus(POExceStatus.PO_EXCE_STATUS_EXCE_ING.val); + + if (!purchaseService.saveOrUpdate(purchase)) { + throw new CoolException("PO鍗曟墽琛屽畬鎴愬悗锛屼繚瀛樺け璐ワ紒锛�"); + } + }); + + + return null; + } + + /** * @param * @return * @author Ryan -- Gitblit v1.9.1