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.mapper.DeliveryNoticeMapper; import com.gs.xky.service.DeliveryNoticeDetailService; import com.gs.xky.service.DeliveryNoticeService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; /** * @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; @Override public boolean saveDeliveryNotice(XkyDetail xkyDetail) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(DeliveryNotice::getDeliveryNo, xkyDetail.getDeliveryNo()); long count = count(wrapper); if (count > 0) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(DeliveryNotice::getDeliveryNo, xkyDetail.getDeliveryNo()); remove(updateWrapper); } 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<>(); for (LineList list : lineList) { 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]); } noticeDetails.add(detail); } return save(deliveryNotice) && detailService.saveBatch(noticeDetails); } @Override public void callPdaReceiptBtn(String inStr, String result) { baseMapper.callPdaReceiptBtn(inStr, result); } }