啊鑫
2025-04-19 fa41057432882ae94ea4edf816f4f76f1d6fd4ba
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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;
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<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);
        DeliveryNotice one = getOne(wrapper, false);
 
        if (one != null) {
            LambdaUpdateWrapper<DeliveryNotice> updateWrapper = new LambdaUpdateWrapper<>();
            updateWrapper.eq(DeliveryNotice::getDeliveryNo, xkyDetail.getDeliveryNo());
            remove(updateWrapper);
 
            LambdaUpdateWrapper<DeliveryNoticeDetail> 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> lineList = xkyDetail.getLineList();
 
        if (CollUtil.isEmpty(lineList)) {
            return true;
        }
 
        List<DeliveryNoticeDetail> noticeDetails = new ArrayList<>();
 
        List<LineList> 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);
    }
}