package com.gs.xky.service.Impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gs.xky.dto.LineList; 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.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * @author 28567 * @description 针对表【DELIVERY_NOTICE(送货通知单主表)】的数据库操作Service实现 * @createDate 2025-02-11 20:55:22 */ @Service @Transactional(rollbackFor = Exception.class) @RequiredArgsConstructor public class DeliveryNoticeServiceImpl extends ServiceImpl implements DeliveryNoticeService { private final DeliveryNoticeDetailService detailService; private final MesInvItemArnService invItemArnService; @Override public boolean saveDeliveryNotice(XkyDetail xkyDetail) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(DeliveryNotice::getDeliveryNo, xkyDetail.getDeliveryNo()); // long count = count(wrapper); DeliveryNotice one = getOne(wrapper, false); if (one != null) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(DeliveryNotice::getDeliveryNo, xkyDetail.getDeliveryNo()); remove(updateWrapper); LambdaUpdateWrapper updateWrapper1 = new LambdaUpdateWrapper<>(); updateWrapper1.eq(DeliveryNoticeDetail::getPid, one.getId()); detailService.remove(updateWrapper1); } DeliveryNotice deliveryNotice = new DeliveryNotice(); BeanUtil.copyProperties(xkyDetail, deliveryNotice); long id = baseMapper.getNextVal(); deliveryNotice.setId(id); List lineList = xkyDetail.getLineList(); if (CollUtil.isEmpty(lineList)) { return true; } List noticeDetails = new ArrayList<>(); List collect = lineList.stream().filter(s -> "1".equals(s.getStatus())).collect(Collectors.toList()); for (LineList list : collect) { DeliveryNoticeDetail detail = new DeliveryNoticeDetail(); BeanUtil.copyProperties(list, detail); detail.setPid(id); if (StrUtil.isNotEmpty(detail.getPoLineNo())) { String[] split = detail.getPoLineNo().split("-"); detail.setPoLineNo(split[0]); detail.setPlanLineNo(split[1] + "-" + detail.getDeliveryQty()); } noticeDetails.add(detail); } return save(deliveryNotice) && detailService.saveBatch(noticeDetails); } @Override 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 itemArnMinus) { // 遍历每个 itemArn itemArnMinus.forEach(itemArn -> { try { // 处理每个 itemArn processMesInvItemArnStatus("1000", "1000", "PL017", itemArn.getId()); } catch (Exception e) { // 处理异常,例如记录日志 System.err.println("Error processing itemArn: " + itemArn.getId()); e.printStackTrace(); } }); } }