zss
2023-08-15 772ce1ff99b32e0d8c5ee1135f8a9fb03eb9fc60
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package com.yuanchu.mom.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.ImportRepertoryMapper;
import com.yuanchu.mom.mapper.RepertoryMapper;
import com.yuanchu.mom.pojo.ImportRepertory;
import com.yuanchu.mom.pojo.Repertory;
import com.yuanchu.mom.pojo.dto.ImportRepertoryDto;
import com.yuanchu.mom.service.ImportRepertoryService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
 
/**
 * 成品入库表(ImportRepertory)表服务实现类
 *
 * @author zss
 * @since 2023-08-10 10:27:01
 */
@Service
public class ImportRepertoryServiceImpl extends ServiceImpl<ImportRepertoryMapper, ImportRepertory> implements ImportRepertoryService {
 
    @Resource
    ImportRepertoryMapper importRepertoryMapper;
 
    @Resource
    RepertoryMapper repertoryMapper;
 
    //新增成品入库
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void addImpRep(String name, ImportRepertoryDto importRepertoryDto) {
        //新增成品入库
        ImportRepertory importRepertory = new ImportRepertory();
        BeanUtils.copyProperties(importRepertoryDto, importRepertory);
        importRepertory.setUserName(name);
        importRepertoryMapper.insert(importRepertory);
        /*新增成品库存(未检验)*/
        //如果入库的信息一样只有库存不一样,则在原来的库存数量上加上相应的数量
        LambdaQueryWrapper<Repertory> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Repertory::getOrderCode, importRepertoryDto.getOrderCode())
                .eq(Repertory::getCode, importRepertoryDto.getCode())
                .eq(Repertory::getName, importRepertoryDto.getName())
                .eq(Repertory::getSpecifications, importRepertoryDto.getSpecifications())
                .eq(Repertory::getUnit, importRepertoryDto.getUnit())
                .eq(Repertory::getType, 0);
        Repertory rep = repertoryMapper.selectOne(queryWrapper);
        if (rep != null && rep.getCheckState() == 0) {
            rep.setNumber(rep.getNumber() + importRepertoryDto.getNumber());
            rep.setUserName(name);
            repertoryMapper.updateById(rep);
        } else {
            //如果除了库存别的信息有任何一个不一样,则新增一条成品库存
            Repertory repertory = new Repertory();
            BeanUtils.copyProperties(importRepertoryDto, repertory);
            repertory.setUserName(name);
            repertory.setType(0);
            repertory.setCheckState(0);
            repertoryMapper.insert(repertory);
        }
    }
 
    //查询入库列表
    @Override
    public IPage<Map<String, Object>> selectAllImpRep(Page<Object> page, String orderCode, String name, String time) {
        return importRepertoryMapper.selectAllImpRep(page, orderCode, name, time);
    }
 
    //根据id删除
    @Override
    public void delImpRep(Integer id) {
        //删除入库记录
        ImportRepertory importRepertory = importRepertoryMapper.selectById(id);
        importRepertory.setState(0);
        importRepertoryMapper.updateById(importRepertory);
        //库存也要减少
        LambdaQueryWrapper<Repertory> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Repertory::getOrderCode, importRepertory.getOrderCode())
                .eq(Repertory::getCode, importRepertory.getCode())
                .eq(Repertory::getName, importRepertory.getName())
                .eq(Repertory::getSpecifications, importRepertory.getSpecifications())
                .eq(Repertory::getUnit, importRepertory.getUnit())
                .eq(Repertory::getType, 0)
                .eq(Repertory::getCheckState, 0);
        Repertory rep = repertoryMapper.selectOne(queryWrapper);
        rep.setNumber(rep.getNumber() - importRepertory.getNumber());
        repertoryMapper.updateById(rep);
    }
 
    //批量删除
    @Override
    public void delAllImpRep(List<Integer> ids) {
        List<ImportRepertory> importRepertories = importRepertoryMapper.selectBatchIds(ids);
        for (ImportRepertory importRepertory : importRepertories) {
            importRepertory.setState(0);
            //删除入库记录
            importRepertoryMapper.updateById(importRepertory);
            //减少库存
            LambdaQueryWrapper<Repertory> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(Repertory::getOrderCode, importRepertory.getOrderCode())
                    .eq(Repertory::getCode, importRepertory.getCode())
                    .eq(Repertory::getName, importRepertory.getName())
                    .eq(Repertory::getSpecifications, importRepertory.getSpecifications())
                    .eq(Repertory::getUnit, importRepertory.getUnit())
                    .eq(Repertory::getType, 0)
                    .eq(Repertory::getCheckState, 0);
            Repertory rep = repertoryMapper.selectOne(queryWrapper);
            rep.setNumber(rep.getNumber() - importRepertory.getNumber());
            repertoryMapper.updateById(rep);
        }
    }
}