AuditServiceImpl.java 13.8 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.*;
wzp's avatar
wzp committed
9
import cn.wisenergy.chnmuseum.party.service.AuditService;
10 11
import cn.wisenergy.chnmuseum.party.service.ExhibitionBoardService;
import cn.wisenergy.chnmuseum.party.service.LearningContentService;
liqin's avatar
liqin committed
12
import cn.wisenergy.chnmuseum.party.service.VideoContentService;
13
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
wzp's avatar
wzp committed
14
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
wzp's avatar
wzp committed
15 16 17
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
18
import org.apache.commons.lang3.StringUtils;
jiawei's avatar
jiawei committed
19
import org.apache.shiro.SecurityUtils;
20
import org.springframework.stereotype.Service;
wzp's avatar
wzp committed
21 22

import javax.annotation.Resource;
23
import java.time.LocalDateTime;
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

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

    /**
     * 分页查询
     *
     * @param name
     * @param status
     * @param type
     * @return
     */
    @Override
66
    public Page<Audit> pageList(String name, AuditStatusEnum status, AuditStatusEnum auditStatusLevel, AuditTypeEnum type, Page<Object> page) {
67 68 69 70 71 72
        //分页
        Page<Audit> auditPage = new Page<>();
        auditPage.setCurrent(page.getCurrent());
        auditPage.setSize(page.getSize());
        //条件
        QueryWrapper<Audit> ew = new QueryWrapper<Audit>()
wzp's avatar
wzp committed
73 74
                //暂时注掉
//                .eq("a.level", auditStatusLevel.name())
75 76 77 78 79 80 81 82
                .eq("a.type", type.name())
                .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
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

    /**
     * 分别查询
     *
     * @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
108
            case VIDEO_CONTENT:
liqin's avatar
liqin committed
109
                selectPage = auditMapper.getVideoContentPage(auditPage, ew);
110 111 112 113 114 115
            default:
        }
        //
        return selectPage;
    }

116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
    /**
     * 根据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
139 140 141 142 143 144 145 146 147 148 149 150 151 152
    @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");
        Audit one = getOne(wrapper);
        return one;
    }

153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
    /**
     * 初审级别的修改情况
     *
     * @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("");
        }
170
        audit.setSecondRemarks("");
171 172
        //通过与不通过时 都修改
        boolean updateRefItemByRefItemId = updateRefItemByRefItemId(audit);
173
        int update = auditMapper.updateById(audit);
174 175 176 177
        return updateRefItemByRefItemId && update >= 1;
        //初审驳回时,不做状态修改
//        int update = auditMapper.updateById(audit);
//        return update >= 1;
178 179 180 181 182 183 184 185 186 187 188 189 190 191
    }

    /**
     * 复审级别的修改情况
     *
     * @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("");
        }
192
        audit.setFirstRemarks("");
193
        //复审通过时,
194 195 196 197 198
//        boolean updateRefItemByRefItemId = true;
//        if (AuditStatusEnum.APPROVED_FINAL.equals(auditStatusEnum)) {
//            //修改对应审核项中的信息
//            updateRefItemByRefItemId = updateRefItemByRefItemId(audit);
//        }
199

200 201
        //通过与不通过时 都修改
        boolean updateRefItemByRefItemId = updateRefItemByRefItemId(audit);
202 203 204 205 206 207 208 209 210 211 212 213 214 215
        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
216 217 218
            case VIDEO_CONTENT:
                VideoContent videoContent = fillVideoContentByAudit(audit);
                update = videoContentService.updateById(videoContent);
219 220 221 222
                break;
//            case ACCOUNT:
//                break;
            case EXHIBITION_BOARD:
liqin's avatar
liqin committed
223
                ExhibitionBoard exhibitionBoard = fillVideoContentByExhibitionBoard(audit);
224 225 226
                update = exhibitionBoardService.updateById(exhibitionBoard);
                break;
            case LEARNING_CONTENT:
liqin's avatar
liqin committed
227
                LearningContent learningContent = fillVideoContentByLearningContent(audit);
228 229 230 231 232 233 234 235 236 237
                update = learningContentService.updateById(learningContent);
                break;
            default:
                throw new InterfaceException("type参数不正确");
        }
        return update;
    }


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

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

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

jiawei's avatar
jiawei committed
363 364 365 366 367 368 369 370 371 372
    /**
     * 根据审核项数据插入审核记录
     *
     * @param refItemId     审核项ID
     * @param content       审核内容
     * @param typeEnum      审核类型
     * @param operationEnum 操作类型
     * @return
     */
    @Override
liqin's avatar
liqin committed
373
    public boolean saveByRefItemInfo(String refItemId, String content, AuditTypeEnum typeEnum, AuditOperationEnum operationEnum) {
jiawei's avatar
jiawei committed
374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397
        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());
        audit.setIsDeleted(false);
        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
398

wzp's avatar
wzp committed
399
}