heheng
7 小时以前 407885cde2e4b434509d0f97d4c627c9636f4735
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
package com.gkhy.exam.system.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.gkhy.exam.common.api.CommonPage;
import com.gkhy.exam.common.api.CommonResult;
import com.gkhy.exam.common.constant.UserConstant;
import com.gkhy.exam.common.utils.PageUtils;
import com.gkhy.exam.common.utils.SecurityUtils;
import com.gkhy.exam.system.domain.OutsourcedReview;
import com.gkhy.exam.system.domain.OutsourcedReviewSubsidiary;
import com.gkhy.exam.system.domain.WarehousingRecordDetails;
import com.gkhy.exam.system.mapper.OutsourcedReviewMapper;
import com.gkhy.exam.system.mapper.OutsourcedReviewSubsidiaryMapper;
import com.gkhy.exam.system.service.OutsourcedReviewService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.time.LocalDateTime;
import java.util.List;
 
/**
 * <p>
 * 外包过程评审 服务实现类
 * </p>
 *
 * @author hh
 * @since 2025-08-13 09:16:37
 */
@Service
public class OutsourcedReviewServiceImpl extends ServiceImpl<OutsourcedReviewMapper, OutsourcedReview> implements OutsourcedReviewService {
 
    @Autowired
    private OutsourcedReviewMapper outsourcedReviewMapper;
 
    @Autowired
    private OutsourcedReviewSubsidiaryMapper outsourcedReviewSubsidiaryMapper;
 
    @Override
    public CommonPage selectOutsourcedReviewList(OutsourcedReview outsourcedReview) {
        PageUtils.startPage();
        List<OutsourcedReview> outsourcedReviewList = outsourcedReviewMapper.getOutsourcedReviewList(outsourcedReview);
        return CommonPage.restPage(outsourcedReviewList);
    }
 
    @Override
    @Transactional
    public CommonResult saveOutsourcedReview(OutsourcedReview outsourcedReview) {
        List<OutsourcedReviewSubsidiary> outsourcedReviewSubsidiaryList = outsourcedReview.getOutsourcedReviewSubsidiaryList();
        if (ObjectUtils.isEmpty(outsourcedReviewSubsidiaryList)){
            return CommonResult.failed("保存参数不能为空");
        }
        int i = 0;
        if (outsourcedReview.getId() == null){
            outsourcedReview.setCreateBy(SecurityUtils.getUsername());
            outsourcedReview.setCreateTime(LocalDateTime.now());
            i = outsourcedReviewMapper.insert(outsourcedReview);
        }else {
            outsourcedReview.setUpdateTime(LocalDateTime.now());
            outsourcedReview.setUpdateBy(SecurityUtils.getUsername());
            i = outsourcedReviewMapper.updateById(outsourcedReview);
        }
        if (i > 0){
            batchSaveSubsidiary(outsourcedReview.getId(), outsourcedReviewSubsidiaryList, outsourcedReview.getDelOutsourcedReviewSubsidiaryIds());
        }
        return i > 0 ? CommonResult.success() : CommonResult.failed();
    }
 
    private void batchSaveSubsidiary(Long outsourcedReviewId, List<OutsourcedReviewSubsidiary> outsourcedReviewSubsidiaryList,List<Long> delOutsourcedReviewSubsidiaryIds) {
 
        if (ObjectUtils.isNotEmpty(delOutsourcedReviewSubsidiaryIds)){
            int update = outsourcedReviewSubsidiaryMapper.update(new OutsourcedReviewSubsidiary(),
                    new LambdaUpdateWrapper<OutsourcedReviewSubsidiary>().eq(OutsourcedReviewSubsidiary::getId, delOutsourcedReviewSubsidiaryIds).set(OutsourcedReviewSubsidiary::getDelFlag, UserConstant.DEPT_DISABLE)
                            .set(OutsourcedReviewSubsidiary::getUpdateTime, LocalDateTime.now()).set(OutsourcedReviewSubsidiary::getUpdateBy, SecurityUtils.getUsername())
            );
            if (update <= 0){
                throw new RuntimeException("操作失败");
            }
        }
        outsourcedReviewSubsidiaryList.forEach(outsourcedReviewSubsidiary -> {
            if (outsourcedReviewSubsidiary.getId() == null){
                outsourcedReviewSubsidiary.setReviewId(outsourcedReviewId);
                outsourcedReviewSubsidiary.setCreateTime(LocalDateTime.now());
                outsourcedReviewSubsidiary.setCreateBy(SecurityUtils.getUsername());
                outsourcedReviewSubsidiaryMapper.insert(outsourcedReviewSubsidiary);
            }else {
                outsourcedReviewSubsidiary.setUpdateTime(LocalDateTime.now());
                outsourcedReviewSubsidiary.setUpdateBy(SecurityUtils.getUsername());
                outsourcedReviewSubsidiaryMapper.updateById(outsourcedReviewSubsidiary);
            }
        });
 
    }
 
    @Override
    public CommonResult getOutsourcedReview(Long id) {
 
        OutsourcedReview outsourcedReview = outsourcedReviewMapper.selectById(id);
        if (outsourcedReview != null){
            List<OutsourcedReviewSubsidiary> outsourcedReviewSubsidiaryList = outsourcedReviewSubsidiaryMapper.selectList(
                    new LambdaQueryWrapper<>(OutsourcedReviewSubsidiary.class).eq(OutsourcedReviewSubsidiary::getReviewId, id)
                            .eq(OutsourcedReviewSubsidiary::getDelFlag, UserConstant.ENABLE).orderByDesc(OutsourcedReviewSubsidiary::getCreateTime)
            );
            outsourcedReview.setOutsourcedReviewSubsidiaryList(outsourcedReviewSubsidiaryList);
        }
        return CommonResult.success(outsourcedReview);
    }
 
    @Override
    @Transactional
    public CommonResult deletedOutsourcedReview(Long id) {
        int i = outsourcedReviewMapper.update(new OutsourcedReview(),
                new LambdaUpdateWrapper<OutsourcedReview>().eq(OutsourcedReview::getId, id).set(OutsourcedReview::getDelFlag, UserConstant.DEPT_DISABLE)
                        .set(OutsourcedReview::getUpdateTime, LocalDateTime.now()).set(OutsourcedReview::getUpdateBy, SecurityUtils.getUsername())
        );
        if (i > 0){
            outsourcedReviewSubsidiaryMapper.update(new OutsourcedReviewSubsidiary(),
                    new LambdaUpdateWrapper<OutsourcedReviewSubsidiary>().eq(OutsourcedReviewSubsidiary::getReviewId, id)
                            .set(OutsourcedReviewSubsidiary::getDelFlag, UserConstant.DEPT_DISABLE)
                            .set(OutsourcedReviewSubsidiary::getUpdateTime, LocalDateTime.now())
                            .set(OutsourcedReviewSubsidiary::getUpdateBy, SecurityUtils.getUsername()));
        }
        return CommonResult.success();
    }
}