chenrui
2025-04-09 e2c5017787d7fc5eea2afb8bc84bca0db054ad8c
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
package com.ruoyi.basic.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.enums.StandardProductListChcekTypeEnums;
import com.ruoyi.basic.mapper.StandardProductListMapper;
import com.ruoyi.basic.mapper.StandardProductListSupplierAskBackupRelMapper;
import com.ruoyi.basic.pojo.StandardProductList;
import com.ruoyi.basic.pojo.StandardProductListSupplierAskBackupRel;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.basic.mapper.StandardProductListSupplierAskMapper;
import com.ruoyi.basic.pojo.StandardProductListSupplierAsk;
import com.ruoyi.basic.service.StandardProductListSupplierAskService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
 
import java.util.ArrayList;
import java.util.List;
 
/**
 * 检验项目厂家密度绑定表
 *
 * @author zhuo
 * @since 2024-09-23
 */
@Service
public class StandardProductListSupplierAskServiceImpl extends ServiceImpl<StandardProductListSupplierAskMapper, StandardProductListSupplierAsk> implements StandardProductListSupplierAskService {
 
    @Autowired
    private StandardProductListSupplierAskBackupRelMapper standardProductListSupplierAskBackupRelMapper;
 
    @Autowired
    private StandardProductListMapper standardProductListMapper;
 
    /**
     * 查询厂家要求值绑定
     * @param supplierAsk
     * @return
     */
    @Override
    public List<StandardProductListSupplierAsk> selectByProductId(StandardProductListSupplierAsk supplierAsk) {
        if (supplierAsk.getProductListId() == null) {
            throw new BaseException("缺少检验项id");
        }
        return baseMapper.selectList(Wrappers.<StandardProductListSupplierAsk>lambdaQuery()
                .eq(StandardProductListSupplierAsk::getProductListId, supplierAsk.getProductListId()));
    }
 
    /**
     * 新增厂家要求值绑定
     * @param supplierAsk
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Integer addProductSupplierAsk(StandardProductListSupplierAsk supplierAsk) {
        if (supplierAsk.getProductListId() == null) {
            throw new BaseException("缺少产品对象id");
        }
        // 新增前备份
        backupSupplierAsk(supplierAsk);
        // 修改状态为待提交
        StandardProductList standardProductList = new StandardProductList();
        standardProductList.setId(supplierAsk.getProductListId());
        standardProductList.setCheckStatus(StandardProductListChcekTypeEnums.WAIT_CHECK.getCode());
        standardProductListMapper.updateById(standardProductList);
        // 查询改厂家是否绑定过
        Long count = baseMapper.selectCount(Wrappers.<StandardProductListSupplierAsk>lambdaQuery()
                .eq(StandardProductListSupplierAsk::getProductListId, supplierAsk.getProductListId())
                .eq(StandardProductListSupplierAsk::getSupplierName, supplierAsk.getSupplierName()));
        if (count > 0){
            throw new BaseException("该产品已绑定过该厂家");
        }
        baseMapper.insert(supplierAsk);
        return supplierAsk.getSupplierAskId();
    }
 
    /**
     * 修改厂家要求值绑定
     * @param supplierAsk
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Integer updateProductSupplierAsk(StandardProductListSupplierAsk supplierAsk) {
        if (supplierAsk.getProductListId() == null) {
            throw new BaseException("缺少检验项id");
        }
        // 修改前备份
        backupSupplierAsk(supplierAsk);
        // 修改状态为待提交
        StandardProductList standardProductList = new StandardProductList();
        standardProductList.setId(supplierAsk.getProductListId());
        standardProductList.setCheckStatus(StandardProductListChcekTypeEnums.WAIT_CHECK.getCode());
        standardProductListMapper.updateById(standardProductList);
        // 查询改厂家是否绑定过
        Long count = baseMapper.selectCount(Wrappers.<StandardProductListSupplierAsk>lambdaQuery()
                .ne(StandardProductListSupplierAsk::getSupplierAskId, supplierAsk.getSupplierAskId())
                .eq(StandardProductListSupplierAsk::getProductListId, supplierAsk.getProductListId())
                .eq(StandardProductListSupplierAsk::getSupplierName, supplierAsk.getSupplierName()));
        if (count > 0){
            throw new BaseException("该检验项已绑定过该厂家");
        }
        baseMapper.updateById(supplierAsk);
        return supplierAsk.getSupplierAskId();
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteProductSupplierAsk(Integer supplierAskId) {
        StandardProductListSupplierAsk supplierAsk = baseMapper.selectById(supplierAskId);
        // 删除前备份
        backupSupplierAsk(supplierAsk);
        // 修改状态为待提交
        StandardProductList standardProductList = new StandardProductList();
        standardProductList.setId(supplierAsk.getProductListId());
        standardProductList.setCheckStatus(StandardProductListChcekTypeEnums.WAIT_CHECK.getCode());
        standardProductListMapper.updateById(standardProductList);
        baseMapper.deleteById(supplierAskId);
    }
 
    /**
     * 检验项目厂家密度绑定备份表表备份
     *
     * @param supplierAsk
     */
    @Override
    public void backupSupplierAsk(StandardProductListSupplierAsk supplierAsk) {
        // 查询备份数据是否存在,如果有不做备份
        QueryWrapper<StandardProductListSupplierAskBackupRel> backupQueryWrapper = new QueryWrapper<>();
        backupQueryWrapper.eq("product_list_id", supplierAsk.getProductListId());
        List<StandardProductListSupplierAskBackupRel> standardProductListSupplierAskBackupRels = standardProductListSupplierAskBackupRelMapper.selectList(backupQueryWrapper);
        // 查询原数据进行备份
        if(CollectionUtils.isEmpty(standardProductListSupplierAskBackupRels)){
            QueryWrapper<StandardProductListSupplierAsk> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("product_list_id", supplierAsk.getProductListId());
            List<StandardProductListSupplierAsk> standardProductListSupplierAskList = baseMapper.selectList(queryWrapper);
            List<StandardProductListSupplierAskBackupRel> supplierAskBackupRelInsertList = new ArrayList<>();
            for (StandardProductListSupplierAsk standardProductListSupplierAsk : standardProductListSupplierAskList) {
                StandardProductListSupplierAskBackupRel standardProductListSupplierAskBackupRel = new StandardProductListSupplierAskBackupRel();
                BeanUtils.copyProperties(standardProductListSupplierAsk, standardProductListSupplierAskBackupRel);
                supplierAskBackupRelInsertList.add(standardProductListSupplierAskBackupRel);
            }
            if(!CollectionUtils.isEmpty(supplierAskBackupRelInsertList)){
                standardProductListSupplierAskBackupRelMapper.batchInsertSupplierAskBackUpRel(supplierAskBackupRelInsertList);
            }
        }
    }
}