liujie
2026-05-15 28e68c33134c4934bdeee1498992c29a989f8878
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
154
155
156
157
158
159
160
161
162
package com.estate.expert.admin.service.impl;
 
 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.estate.expert.admin.domain.business.check.Check;
import com.estate.expert.admin.domain.business.check.CheckVo;
import com.estate.expert.admin.domain.business.client.Client;
import com.estate.expert.admin.domain.common.request.AddCheckInfoRequest;
import com.estate.expert.admin.domain.common.request.EditCheckInfoRequest;
import com.estate.expert.admin.domain.common.request.OnDutyRequest;
import com.estate.expert.admin.domain.common.request.PageReq;
import com.estate.expert.admin.domain.common.response.PageRespMp;
import com.estate.expert.admin.domain.exam.task.check.CheckTask;
import com.estate.expert.admin.domain.repository.CheckMapper;
import com.estate.expert.admin.domain.user.User;
import com.estate.expert.admin.service.CheckService;
import com.estate.expert.admin.service.CheckTaskService;
import com.estate.expert.admin.service.ClientService;
import com.estate.expert.common.exception.BizException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.Date;
import java.util.List;
import java.util.Objects;
 
/**
 * <p>
 * 检查情况 服务实现类
 * </p>
 *
 * @author administrator
 * @since 2026-01-12
 */
@Service
public class CheckServiceImpl extends ServiceImpl<CheckMapper, Check> implements CheckService {
 
    @Autowired
    private CheckTaskService checkTaskService;
 
    @Autowired
    private ClientService clientService;
 
    @Override
    public List<CheckVo> pageList(Page<CheckVo> page, OnDutyRequest request) {
        String sTime =null;
        String eTime =null;
        if(request.getTime()!=null && !request.getTime().isEmpty()){
            sTime = request.getTime().split(" - ")[0] + " 00:00:00";
            eTime = request.getTime().split(" - ")[1] + " 23:59:59";
        }
        List<CheckVo> list = this.baseMapper.pageList(page, request,sTime,eTime);
        return list;
    }
 
    @Override
    public CheckVo detail(Integer id) {
        return  this.baseMapper.detail(id);
    }
 
    @Override
    public PageRespMp<Check> listCheckInfoRecords(Integer checkTaskId, Integer creatorId, PageReq pageReq) {
        Page<Check> page = lambdaQuery().eq(Check::getCheckTaskId, checkTaskId).eq(Objects.nonNull(creatorId), Check::getCreatorId, creatorId)
                .orderByDesc(Check::getCreateTime)
                .page(new Page<>(pageReq.getPage(), pageReq.getSize()));
        // 将 Spring Data Page 转换为自定义 PageResp
        return PageRespMp.of(page);
    }
 
    /**
     * 添加检查信息(MyBatis Plus 方式)
     */
    @Override
    @Transactional
    public void addCheckInfo(User creator, AddCheckInfoRequest request) {
        //1.校验任务id
        CheckTask checkTask = checkTaskService.get(request.getCheckTaskIdId());
        if (Objects.isNull(checkTask)) {
            throw new BizException("检查任务不存在");
        }
        Client client = clientService.get(checkTask.getProject().getClient().getId());
        if (Objects.isNull(client)) {
            throw new BizException("委托方不存在");
        }
        //校验是否已检查
        Long count = lambdaQuery().eq(Check::getCheckTaskId, request.getCheckTaskIdId()).count();
        if (count > 0) {
            throw new BizException("已检查不可重复上传");
        }
        // 1. 创建 Check 实体对象(MyBatis Plus 实体)
        Check check = new Check();
 
        // 2. 设置基本字段
        check.setTitle(request.getTitle());
        check.setSafetySlip(request.getSafetySlip());
        check.setCheckUserImg(request.getCheckUserImg());
        check.setIntegrityNotification(request.getIntegrityNotification());
 
        // 3. 设置关联字段
        check.setCheckTaskId(request.getCheckTaskIdId());
        check.setPlanId(checkTask.getPlan().getId());
        check.setProjectId(checkTask.getProject().getId());
        check.setClientId(client.getId());
        // 4. 设置创建者ID(MyBatis Plus 使用 creatorId 字段)
        check.setCreatorId(creator.getId());
 
        // 5. 设置时间字段
        check.setTime(new Date());
 
        // createTime: 当前时间戳
        check.setCreateTime(new Date());
 
        // 6. 保存到数据库(MyBatis Plus 方式)
        save(check);
    }
 
    /**
     * 编辑检查信息(MyBatis Plus 方式)
     */
    @Override
    @Transactional
    public void editCheckInfo(EditCheckInfoRequest request) {
        // 1. 根据 id 查询现有的 Check 实体
        Check check = getById(request.getId());
        if (check == null) {
            throw new BizException("检查信息不存在");
        }
 
        // 2. 更新字段
        check.setTitle(request.getTitle());
        check.setSafetySlip(request.getSafetySlip());
        check.setCheckUserImg(request.getCheckUserImg());
        check.setIntegrityNotification(request.getIntegrityNotification());
 
        // 3. 保存更新(MyBatis Plus 方式)
        updateById(check);
    }
 
    /**
     * 批量删除检查信息(MyBatis Plus 方式)
     */
    @Override
    @Transactional
    public void deleteCheckInfoByIds(List<Integer> ids) {
        // 使用 MyBatis Plus 的批量删除方法(逻辑删除,因为 Check 实体有 @TableLogic 注解)
        removeByIds(ids);
    }
 
    @Override
    public List<CheckVo> exportList(OnDutyRequest request) {
        String sTime =null;
        String eTime =null;
        if(request.getTime()!=null && !request.getTime().isEmpty()){
            sTime = request.getTime().split(" - ")[0] + " 00:00:00";
            eTime = request.getTime().split(" - ")[1] + " 23:59:59";
        }
        List<CheckVo> list = this.baseMapper.exportList( request,sTime,eTime);
        return list;
    }
}