AuditServiceImpl.java 15 KB
Newer Older
wzp's avatar
wzp committed
1 2
package cn.wisenergy.chnmuseum.party.service.impl;

3
import cn.wisenergy.chnmuseum.party.common.enums.AuditOperationEnum;
4 5
import cn.wisenergy.chnmuseum.party.common.enums.AuditStatusEnum;
import cn.wisenergy.chnmuseum.party.common.enums.AuditTypeEnum;
6
import cn.wisenergy.chnmuseum.party.common.mvc.InterfaceException;
wzp's avatar
wzp committed
7
import cn.wisenergy.chnmuseum.party.mapper.AuditMapper;
8
import cn.wisenergy.chnmuseum.party.model.*;
liqin's avatar
liqin committed
9
import cn.wisenergy.chnmuseum.party.service.*;
liqin's avatar
liqin committed
10
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
11
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
wzp's avatar
wzp committed
12
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
liqin's avatar
liqin committed
13
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
wzp's avatar
wzp committed
14 15 16
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
17
import org.apache.commons.lang3.StringUtils;
jiawei's avatar
jiawei committed
18
import org.apache.shiro.SecurityUtils;
19
import org.springframework.stereotype.Service;
wzp's avatar
wzp committed
20 21

import javax.annotation.Resource;
22
import java.time.LocalDateTime;
liqin's avatar
liqin committed
23
import java.util.List;
wzp's avatar
wzp committed
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

/**
 * <pre>
 * 学习内容信息 服务实现类
 * </pre>
 *
 * @author Danny Lee
 * @since 2021-03-26
 */
@Slf4j
@Service
public class AuditServiceImpl extends ServiceImpl<AuditMapper, Audit> implements AuditService {

    @Resource
    private AuditMapper auditMapper;

liqin's avatar
liqin committed
40
    @Resource
41 42
    private TUserServiceImpl userService;

liqin's avatar
liqin committed
43 44
    @Resource
    private VideoContentService videoContentService;
45

liqin's avatar
liqin committed
46 47
    @Resource
    private ExhibitionBoardService exhibitionBoardService;
48

liqin's avatar
liqin committed
49 50
    @Resource
    private LearningContentService learningContentService;
51

liqin's avatar
liqin committed
52 53 54
    @Resource
    private LearningContentBoardService learningContentBoardService;

wzp's avatar
wzp committed
55
    @Override
wzp's avatar
wzp committed
56
    public Page<Audit> getUserList(Page<Audit> page, TUser user) {
57 58 59 60 61 62 63 64 65 66 67 68
        return page.setRecords(auditMapper.getUserList(page, user));
    }

    /**
     * 分页查询
     *
     * @param name
     * @param status
     * @param type
     * @return
     */
    @Override
69
    public Page<Audit> pageList(String name, AuditStatusEnum status, AuditStatusEnum auditStatusLevel, AuditTypeEnum type, Page<Object> page) {
70 71 72 73 74 75
        //分页
        Page<Audit> auditPage = new Page<>();
        auditPage.setCurrent(page.getCurrent());
        auditPage.setSize(page.getSize());
        //条件
        QueryWrapper<Audit> ew = new QueryWrapper<Audit>()
wzp's avatar
wzp committed
76 77
                //暂时注掉
//                .eq("a.level", auditStatusLevel.name())
78
                .eq("a.type", type.name())
79 80 81
                .eq("a.is_deleted", 0)
//                .eq("b.is_deleted", 0)
//                .eq("c.is_deleted", 0)
82 83 84 85 86 87 88
                .orderByDesc("a.create_time", "a.id");
        //
        if (status != null) {
            ew.eq(status != null, "a.status", status.name());
        }
        Page<Audit> pageList = pageByType(ew, name, type, auditPage);
        return pageList;
wzp's avatar
wzp committed
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

    /**
     * 分别查询
     *
     * @param name
     * @param type
     * @param auditPage
     * @return
     */
    private Page<Audit> pageByType(QueryWrapper<Audit> ew, String name,
                                   AuditTypeEnum type, Page<Audit> auditPage) {
        Page<Audit> selectPage = null;
        if (StringUtils.isNotBlank(name)) {
            ew.and(i -> i.like("b.name", name).or().like("c.user_name", name));
        }
        switch (type) {
            case LEARNING_CONTENT:
                selectPage = auditMapper.getLearningContentPage(auditPage, ew);
                break;
            case EXHIBITION_BOARD:
                selectPage = auditMapper.getExhibitionBoardPage(auditPage, ew);
                break;
            case ACCOUNT:
                break;
liqin's avatar
liqin committed
114
            case VIDEO_CONTENT:
liqin's avatar
liqin committed
115
                selectPage = auditMapper.getVideoContentPage(auditPage, ew);
116 117 118 119 120 121
            default:
        }
        //
        return selectPage;
    }

122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
    /**
     * 根据id更新审核信息
     *
     * @param audit
     * @return
     */
    @Override
    public boolean updateAuditAllById(Audit audit) {
        //审核层级,初审 和 复审
        AuditStatusEnum auditStatusLevel = AuditStatusEnum.valueOf(audit.getLevel());
        boolean update;
        switch (auditStatusLevel) {
            case TBC:
                update = updateOnTBC(audit);
                return update;
            case TBCA:
                update = updateOnTBCA(audit);
                return update;
            default:
                throw new InterfaceException("level参数不正确");
        }
    }

wzp's avatar
wzp committed
145 146 147 148 149 150 151 152 153 154
    @Override
    public Audit selectOne(String id, String type) {
        UpdateWrapper<Audit> wrapper = new UpdateWrapper<>();
        if (StringUtils.isNotBlank(id)) {
            wrapper.eq("ref_item_id", id);
        }
        if (StringUtils.isNotBlank(type)) {
            wrapper.eq("type", type);
        }
        wrapper.orderByDesc("create_time").last("limit 1");
liqin's avatar
liqin committed
155
        return getOne(wrapper);
wzp's avatar
wzp committed
156 157
    }

158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
    /**
     * 初审级别的修改情况
     *
     * @return
     */
    private boolean updateOnTBC(Audit audit) {
        audit.setFirstTime(LocalDateTime.now());
        String status = audit.getStatus();
        AuditStatusEnum auditStatusEnum = AuditStatusEnum.valueOf(status);
        //初审 通过时,修改状态为待复审
        if (AuditStatusEnum.APPROVED_FINAL.equals(auditStatusEnum)) {
            audit.setStatus(AuditStatusEnum.TBCA.name());
            audit.setLevel(AuditStatusEnum.TBCA.name());
        }
        if (!AuditStatusEnum.REFUSED.equals(auditStatusEnum)) {
            audit.setFirstRemarks("");
        }
175
        audit.setSecondRemarks("");
176 177
        //通过与不通过时 都修改
        boolean updateRefItemByRefItemId = updateRefItemByRefItemId(audit);
178
        int update = auditMapper.updateById(audit);
179 180 181 182
        return updateRefItemByRefItemId && update >= 1;
        //初审驳回时,不做状态修改
//        int update = auditMapper.updateById(audit);
//        return update >= 1;
183 184 185 186 187 188 189 190 191 192 193 194 195 196
    }

    /**
     * 复审级别的修改情况
     *
     * @return
     */
    private boolean updateOnTBCA(Audit audit) {
        audit.setSecondTime(LocalDateTime.now());
        String status = audit.getStatus();
        AuditStatusEnum auditStatusEnum = AuditStatusEnum.valueOf(status);
        if (!AuditStatusEnum.REFUSED.equals(auditStatusEnum)) {
            audit.setSecondRemarks("");
        }
197
        audit.setFirstRemarks("");
198
        //复审通过时,
199 200 201 202 203
//        boolean updateRefItemByRefItemId = true;
//        if (AuditStatusEnum.APPROVED_FINAL.equals(auditStatusEnum)) {
//            //修改对应审核项中的信息
//            updateRefItemByRefItemId = updateRefItemByRefItemId(audit);
//        }
204

205 206
        //通过与不通过时 都修改
        boolean updateRefItemByRefItemId = updateRefItemByRefItemId(audit);
207 208 209 210 211 212 213 214 215 216 217 218
        int update = auditMapper.updateById(audit);
        return updateRefItemByRefItemId && update >= 1;
    }

    /**
     * 根据审核项ID 修改 审核项表中的信息
     */
    private boolean updateRefItemByRefItemId(Audit audit) {
        String type = audit.getType();
        AuditTypeEnum auditTypeEnum = AuditTypeEnum.valueOf(type);
        boolean update;
        switch (auditTypeEnum) {
liqin's avatar
liqin committed
219
            case VIDEO_CONTENT:
liqin's avatar
liqin committed
220
                update = fillVideoContentByAudit(audit);
221 222 223 224
                break;
//            case ACCOUNT:
//                break;
            case EXHIBITION_BOARD:
liqin's avatar
liqin committed
225
                update = fillExhibitionBoardByAudit(audit);
226 227
                break;
            case LEARNING_CONTENT:
liqin's avatar
liqin committed
228
                update = fillLearningContentByAudit(audit);
229 230 231 232 233 234 235 236
                break;
            default:
                throw new InterfaceException("type参数不正确");
        }
        return update;
    }

    /**
liqin's avatar
liqin committed
237
     * 根据审核操作 填充VideoContent属性用于更改
238 239 240 241
     *
     * @param audit
     * @return
     */
liqin's avatar
liqin committed
242
    public boolean fillVideoContentByAudit(Audit audit) {
liqin's avatar
liqin committed
243 244 245
        VideoContent videoContent = new VideoContent();
        videoContent.setId(audit.getRefItemId());
        videoContent.setAuditStatus(audit.getStatus());
246
        //当审核级别为复审,审核状态为通过是,会修改审核项其它表中的 发布与删除字段,不是此情况下是直接修改审核状态
liqin's avatar
liqin committed
247
        boolean continueFill = AuditStatusEnum.APPROVED_FINAL.name().equals(audit.getStatus()) && AuditStatusEnum.TBCA.name().equals(audit.getLevel());
248
        if (!continueFill) {
liqin's avatar
liqin committed
249
            return this.videoContentService.updateById(videoContent);
250
        }
251 252
        String operation = audit.getOperation();
        AuditOperationEnum auditOperationEnum = AuditOperationEnum.valueOf(operation);
liqin's avatar
liqin committed
253
        boolean update = false;
254
        switch (auditOperationEnum) {
255
            case ENABLE:
liqin's avatar
liqin committed
256
                videoContent.setPublished(true);
liqin's avatar
liqin committed
257
                update = this.videoContentService.updateById(videoContent);
liqin's avatar
liqin committed
258
                break;
259
            case DISABLE:
liqin's avatar
liqin committed
260
                videoContent.setPublished(false);
liqin's avatar
liqin committed
261
                update = this.videoContentService.updateById(videoContent);
262 263
                break;
            case REMOVE:
liqin's avatar
liqin committed
264 265 266 267
                final LambdaQueryWrapper<ExhibitionBoard> queryWrapper = Wrappers.<ExhibitionBoard>lambdaQuery().eq(ExhibitionBoard::getVideoContentId, videoContent.getId());
                queryWrapper.select(ExhibitionBoard::getId);
                final List<String> ExhibitionBoardIdList = this.exhibitionBoardService.listObjs(queryWrapper, Object::toString);
                this.exhibitionBoardService.removeByIds(ExhibitionBoardIdList);
liqin's avatar
liqin committed
268
                update = this.videoContentService.removeById(videoContent);
269
                break;
wzp's avatar
wzp committed
270
            case ADD:
liqin's avatar
liqin committed
271
                videoContent.setPublished(true);
wzp's avatar
wzp committed
272
                update = this.videoContentService.updateById(videoContent);;
wzp's avatar
wzp committed
273 274
                break;
            case EDIT:
liqin's avatar
liqin committed
275
                videoContent.setPublished(true);
wzp's avatar
wzp committed
276
                update = this.videoContentService.updateById(videoContent);;
wzp's avatar
wzp committed
277
                break;
278 279
            default:
        }
liqin's avatar
liqin committed
280
        return update;
281 282 283 284 285 286 287 288
    }

    /**
     * 根据审核操作 填充ExhibitionBoard属性用于更改
     *
     * @param audit
     * @return
     */
liqin's avatar
liqin committed
289
    public boolean fillExhibitionBoardByAudit(Audit audit) {
290 291 292
        ExhibitionBoard exhibitionBoard = new ExhibitionBoard();
        exhibitionBoard.setId(audit.getRefItemId());
        exhibitionBoard.setAuditStatus(audit.getStatus());
293
        //当审核级别为复审,审核状态为通过是,会修改审核项其它表中的 发布与删除字段,不是此情况下是直接修改审核状态
liqin's avatar
liqin committed
294
        boolean continueFill = AuditStatusEnum.APPROVED_FINAL.name().equals(audit.getStatus()) && AuditStatusEnum.TBCA.name().equals(audit.getLevel());
295
        if (!continueFill) {
liqin's avatar
liqin committed
296
            return this.exhibitionBoardService.updateById(exhibitionBoard);
297
        }
298 299
        String operation = audit.getOperation();
        AuditOperationEnum auditOperationEnum = AuditOperationEnum.valueOf(operation);
liqin's avatar
liqin committed
300
        boolean update = false;
301
        switch (auditOperationEnum) {
wzp's avatar
wzp committed
302
            case UPPER:
liqin's avatar
liqin committed
303
                exhibitionBoard.setPublished(true);
liqin's avatar
liqin committed
304
                update = this.exhibitionBoardService.updateById(exhibitionBoard);
liqin's avatar
liqin committed
305
                break;
wzp's avatar
wzp committed
306
            case LOWER:
liqin's avatar
liqin committed
307
                exhibitionBoard.setPublished(false);
liqin's avatar
liqin committed
308
                update = this.exhibitionBoardService.updateById(exhibitionBoard);
309 310
                break;
            case REMOVE:
liqin's avatar
liqin committed
311
                this.learningContentBoardService.remove(Wrappers.<LearningContentBoard>lambdaUpdate().eq(LearningContentBoard::getExhibitionBoardId, exhibitionBoard.getId()));
liqin's avatar
liqin committed
312
                update = this.exhibitionBoardService.removeById(exhibitionBoard);
313
                break;
wzp's avatar
wzp committed
314
            case ADD:
liqin's avatar
liqin committed
315
                exhibitionBoard.setPublished(true);
wzp's avatar
wzp committed
316
                update = this.exhibitionBoardService.updateById(exhibitionBoard);;
wzp's avatar
wzp committed
317 318
                break;
            case EDIT:
liqin's avatar
liqin committed
319
                exhibitionBoard.setPublished(true);
wzp's avatar
wzp committed
320
                update = this.exhibitionBoardService.updateById(exhibitionBoard);;
wzp's avatar
wzp committed
321
                break;
322 323
            default:
        }
liqin's avatar
liqin committed
324
        return update;
325 326 327 328 329 330 331 332
    }

    /**
     * 根据审核操作 填充LearningContent属性用于更改
     *
     * @param audit
     * @return
     */
liqin's avatar
liqin committed
333
    public boolean fillLearningContentByAudit(Audit audit) {
334 335 336
        LearningContent learningContent = new LearningContent();
        learningContent.setAuditStatus(audit.getStatus());
        learningContent.setId(audit.getRefItemId());
337
        //当审核级别为复审,审核状态为通过是,会修改审核项其它表中的 发布与删除字段,不是此情况下是直接修改审核状态
liqin's avatar
liqin committed
338
        boolean continueFill = AuditStatusEnum.APPROVED_FINAL.name().equals(audit.getStatus()) && AuditStatusEnum.TBCA.name().equals(audit.getLevel());
339
        if (!continueFill) {
liqin's avatar
liqin committed
340
            return this.learningContentService.updateById(learningContent);
341
        }
342 343
        String operation = audit.getOperation();
        AuditOperationEnum auditOperationEnum = AuditOperationEnum.valueOf(operation);
liqin's avatar
liqin committed
344
        boolean update = false;
345
        switch (auditOperationEnum) {
346
            case ENABLE:
liqin's avatar
liqin committed
347
                learningContent.setPublished(true);
liqin's avatar
liqin committed
348
                update = this.learningContentService.updateById(learningContent);
liqin's avatar
liqin committed
349
                break;
350
            case DISABLE:
liqin's avatar
liqin committed
351
                learningContent.setPublished(false);
liqin's avatar
liqin committed
352
                update = this.learningContentService.updateById(learningContent);
353 354
                break;
            case REMOVE:
liqin's avatar
liqin committed
355
                update = this.learningContentService.removeById(learningContent);
356
                break;
wzp's avatar
wzp committed
357
            case ADD:
liqin's avatar
liqin committed
358
                learningContent.setPublished(true);
wzp's avatar
wzp committed
359
                update = this.learningContentService.updateById(learningContent);
wzp's avatar
wzp committed
360 361
                break;
            case EDIT:
liqin's avatar
liqin committed
362
                learningContent.setPublished(true);
wzp's avatar
wzp committed
363
                update = this.learningContentService.updateById(learningContent);
wzp's avatar
wzp committed
364
                break;
365 366
            default:
        }
liqin's avatar
liqin committed
367
        return update;
368 369
    }

jiawei's avatar
jiawei committed
370 371 372 373 374 375 376 377 378 379
    /**
     * 根据审核项数据插入审核记录
     *
     * @param refItemId     审核项ID
     * @param content       审核内容
     * @param typeEnum      审核类型
     * @param operationEnum 操作类型
     * @return
     */
    @Override
liqin's avatar
liqin committed
380
    public boolean saveByRefItemInfo(String refItemId, String content, AuditTypeEnum typeEnum, AuditOperationEnum operationEnum) {
jiawei's avatar
jiawei committed
381 382 383 384 385 386 387 388 389
        Audit audit = new Audit();
        //
        audit.setRefItemId(refItemId);
        audit.setContent(content);
        audit.setType(typeEnum.name());
        audit.setOperation(operationEnum.name());
        //
        audit.setLevel(AuditStatusEnum.TBC.name());
        audit.setStatus(AuditStatusEnum.TBC.name());
liqin's avatar
liqin committed
390
        audit.setDeleted(false);
jiawei's avatar
jiawei committed
391 392 393 394 395 396 397 398 399 400 401 402 403 404
        audit.setCreateTime(LocalDateTime.now());
        //
        Object principal = SecurityUtils.getSubject().getPrincipal();
        if (principal instanceof TUser) {
            TUser user = (TUser) principal;
            audit.setUserId(user.getId());
            audit.setUserName(user.getUserName());
            audit.setOrganId(user.getOrgId());
            audit.setOrgName(user.getOrgName());
        }
        //保存
        int insert = auditMapper.insert(audit);
        return insert >= 1;
    }
liqin's avatar
liqin committed
405

wzp's avatar
wzp committed
406
}