AuditServiceImpl.java 13.2 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
                .eq("a.type", type.name())
76 77 78
                .eq("a.is_deleted", 0)
//                .eq("b.is_deleted", 0)
//                .eq("c.is_deleted", 0)
79 80 81 82 83 84 85
                .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
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

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

119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
    /**
     * 根据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
142 143 144 145 146 147 148 149 150 151 152 153 154 155
    @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;
    }

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

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

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


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

    /**
     * 根据审核操作 填充ExhibitionBoard属性用于更改
     *
     * @param audit
     * @return
     */
liqin's avatar
liqin committed
281
    public ExhibitionBoard fillVideoContentByExhibitionBoard(Audit audit) {
282 283 284
        ExhibitionBoard exhibitionBoard = new ExhibitionBoard();
        exhibitionBoard.setId(audit.getRefItemId());
        exhibitionBoard.setAuditStatus(audit.getStatus());
285 286 287 288 289 290
        //当审核级别为复审,审核状态为通过是,会修改审核项其它表中的 发布与删除字段,不是此情况下是直接修改审核状态
        boolean continueFill = AuditStatusEnum.APPROVED_FINAL.name().equals(audit.getStatus()) &&
                AuditStatusEnum.TBCA.name().equals(audit.getLevel());
        if (!continueFill) {
            return exhibitionBoard;
        }
291 292 293 294
        //
        String operation = audit.getOperation();
        AuditOperationEnum auditOperationEnum = AuditOperationEnum.valueOf(operation);
        switch (auditOperationEnum) {
295

wzp's avatar
wzp committed
296
            case UPPER:
liqin's avatar
liqin committed
297 298 299
                exhibitionBoard.setPublished(true);
                exhibitionBoard.setDeleted(false);
                break;
wzp's avatar
wzp committed
300
            case LOWER:
liqin's avatar
liqin committed
301
                exhibitionBoard.setPublished(false);
302 303
                break;
            case REMOVE:
liqin's avatar
liqin committed
304
                exhibitionBoard.setDeleted(true);
305 306 307 308 309 310 311 312 313 314 315 316
                break;
            default:
        }
        return exhibitionBoard;
    }

    /**
     * 根据审核操作 填充LearningContent属性用于更改
     *
     * @param audit
     * @return
     */
liqin's avatar
liqin committed
317
    public LearningContent fillVideoContentByLearningContent(Audit audit) {
318 319 320
        LearningContent learningContent = new LearningContent();
        learningContent.setAuditStatus(audit.getStatus());
        learningContent.setId(audit.getRefItemId());
321 322 323 324 325 326
        //当审核级别为复审,审核状态为通过是,会修改审核项其它表中的 发布与删除字段,不是此情况下是直接修改审核状态
        boolean continueFill = AuditStatusEnum.APPROVED_FINAL.name().equals(audit.getStatus()) &&
                AuditStatusEnum.TBCA.name().equals(audit.getLevel());
        if (!continueFill) {
            return learningContent;
        }
327 328 329 330
        //
        String operation = audit.getOperation();
        AuditOperationEnum auditOperationEnum = AuditOperationEnum.valueOf(operation);
        switch (auditOperationEnum) {
331

332
            case ENABLE:
liqin's avatar
liqin committed
333 334 335
                learningContent.setPublished(true);
                learningContent.setDeleted(false);
                break;
336
            case DISABLE:
liqin's avatar
liqin committed
337
                learningContent.setPublished(false);
338 339
                break;
            case REMOVE:
liqin's avatar
liqin committed
340
                learningContent.setDeleted(true);
341 342 343 344 345 346
                break;
            default:
        }
        return learningContent;
    }

jiawei's avatar
jiawei committed
347 348 349 350 351 352 353 354 355 356
    /**
     * 根据审核项数据插入审核记录
     *
     * @param refItemId     审核项ID
     * @param content       审核内容
     * @param typeEnum      审核类型
     * @param operationEnum 操作类型
     * @return
     */
    @Override
liqin's avatar
liqin committed
357
    public boolean saveByRefItemInfo(String refItemId, String content, AuditTypeEnum typeEnum, AuditOperationEnum operationEnum) {
jiawei's avatar
jiawei committed
358 359 360 361 362 363 364 365 366
        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
367
        audit.setDeleted(false);
jiawei's avatar
jiawei committed
368 369 370 371 372 373 374 375 376 377 378 379 380 381
        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
382

wzp's avatar
wzp committed
383
}