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<DeliveryNoticeMapper, DeliveryNotice>
|
implements DeliveryNoticeService {
|
|
private final DeliveryNoticeDetailService detailService;
|
|
|
@Override
|
public boolean saveDeliveryNotice(XkyDetail xkyDetail) {
|
|
LambdaQueryWrapper<DeliveryNotice> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.eq(DeliveryNotice::getDeliveryNo, xkyDetail.getDeliveryNo());
|
|
long count = count(wrapper);
|
|
if (count > 0) {
|
LambdaUpdateWrapper<DeliveryNotice> 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> lineList = xkyDetail.getLineList();
|
|
if (CollUtil.isEmpty(lineList)) {
|
return true;
|
}
|
|
List<DeliveryNoticeDetail> 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);
|
}
|
}
|