TaskHistoryManagerImpl.java 8.96 KB
/*
 * @(#)TaskHistoryManagerImpl.java
 *
 * Copyright (c) 2014-2017   版权所有
 * xiniunet. All rights reserved.
 *
 * This software is the confidential and proprietary
 * information of  xiniunet.
 * ("Confidential Information"). You shall not disclose
 * such Confidential Information and shall use it only
 * in accordance with the terms of the contract agreement
 * you entered into with xiniunet.
 */
package com.xiniunet.task.biz;

import com.xiniunet.framework.base.BaseManagerImpl;
import com.xiniunet.framework.base.BaseResponse;
import com.xiniunet.framework.security.Passport;
import com.xiniunet.master.domain.system.User;
import com.xiniunet.master.message.humanresource.Message;
import com.xiniunet.master.request.system.UserFindRequest;
import com.xiniunet.master.response.system.UserFindResponse;
import com.xiniunet.task.dal.TaskMapper;
import com.xiniunet.task.po.TaskPO;
import com.xiniunet.task.request.*;
import com.xiniunet.task.response.*;
import com.xiniunet.task.domain.*;
import com.xiniunet.task.dal.TaskHistoryMapper;
import com.xiniunet.task.po.TaskHistoryPO;
import com.xiniunet.foundation.service.FoundationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.xiniunet.framework.exception.ErrorType;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 任务编辑历史的管理方法实现.
 * @author 
 */
@Transactional
@Service
public class TaskHistoryManagerImpl extends BaseManagerImpl implements TaskHistoryManager {

    @Autowired
    private FoundationService foundationService;

    @Autowired
    private TaskHistoryMapper taskHistoryMapper;

    @Autowired
    private TaskManager taskManager;

    /**
     * 根据Id获取任务编辑历史
     *
     * @param request 获取任务编辑历史请求
     * @param passport 用户护照
     * @return 获取任务编辑历史应答
     */
    @Override
    @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
    public TaskHistoryGetResponse get(TaskHistoryGetRequest request, Passport passport) {
        TaskHistoryGetResponse response = new TaskHistoryGetResponse();
        TaskHistoryPO entity = taskHistoryMapper.getById(request.getId(), passport);
        if (entity != null) {
            TaskHistory taskHistory = this.getMapper().map(entity, TaskHistory.class);
            response.setTaskHistory(taskHistory );
        } else {
            response.addError(ErrorType.EXPECTATION_NULL, Message.COMMON_GET_FAILURE);
        }
        return response;
    }


    /**
     * 模糊查询任务编辑历史
     *
     * @param request 模糊查询任务编辑历史请求
     * @param passport 用户护照
     * @return 模糊查询任务编辑历史应答
     */
    @Override
    @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
    public TaskHistorySearchResponse search(TaskHistorySearchRequest request, Passport passport) {
        TaskHistorySearchResponse response = new TaskHistorySearchResponse();
        List<TaskHistory> modelList = new ArrayList<>();
        Long count = taskHistoryMapper.searchCount(request, passport);
    
        if (count > 0) {
            // 处理分页参数
            if (request.getPageSize() > 0) {
                //如果输入的页码大于实际的分页数,将页码设置为最后一页的页码
                int lastPageNumber = (int) ((count - 1) / request.getPageSize() + 1);
                if (request.getPageNumber() > lastPageNumber) {
                    request.setPageNumber(lastPageNumber);
                }
            }
    
            //通过关键字查询出用户集合
            List<TaskHistoryPO> entityList = taskHistoryMapper.search(request, passport);
    
            for (TaskHistoryPO entity : entityList) {
                TaskHistory taskHistory = this.getMapper().map(entity, TaskHistory.class);
                modelList.add(taskHistory);
            }
        }
    
        response.setTotalCount(count);
        response.setResult(modelList);
        return response;
    }
    
    /**
     * 高级查询任务编辑历史
     *
     * @param request 高级查询任务编辑历史请求
     * @param passport 用户护照
     * @return 高级查询任务编辑历史应答
     */
    @Override
    @Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
    public TaskHistoryFindResponse find(TaskHistoryFindRequest request, Passport passport) {
        TaskHistoryFindResponse response = new TaskHistoryFindResponse();
        //查找任务
        TaskGetInfoRequest taskGetInfoRequest = new TaskGetInfoRequest();
        taskGetInfoRequest.setId(request.getTaskId());
        TaskGetInfoResponse taskGetInfoResponse = taskManager.getInfo(taskGetInfoRequest,passport);
        if(taskGetInfoResponse.hasError()){
            response.addErrors(taskGetInfoResponse.getErrors());
            return response;
        }
        Task task = taskGetInfoResponse.getTask();
        List<TaskHistory> modelList = new ArrayList<>();
        Long count = taskHistoryMapper.findCount(request, passport);
        if (count >0) {
            // 处理分页参数
            if (request.getPageSize() > 0) {
                //如果输入的页码大于实际的分页数,将页码设置为最后一页的页码
                int lastPageNumber = (int) ((count - 1) / request.getPageSize() + 1);
                if (request.getPageNumber() > lastPageNumber) {
                    request.setPageNumber(lastPageNumber);
                }
            }
    
            List<TaskHistoryPO> entityList = taskHistoryMapper.find(request, passport);
            for (TaskHistoryPO entity : entityList) {
                TaskHistory taskHistory = this.getMapper().map(entity, TaskHistory.class);
                taskHistory.setAvatarUrl(task.getAvarUrl());
                taskHistory.setProcessPercent(task.getProcessPercent());
                modelList.add(taskHistory);
            }
        }
    
        response.setTotalCount(count);
        response.setResult(modelList);
        return response;
    }

    
    /**
     * 创建任务编辑历史
     *
     * @param request 创建任务编辑历史请求
     * @param passport 用户护照
     * @return 创建任务编辑历史应答
     */
    @Override
    public TaskHistoryCreateResponse create(TaskHistoryCreateRequest request, Passport passport) {
        TaskHistoryCreateResponse response = new TaskHistoryCreateResponse();

        TaskHistoryPO entity = this.getMapper().map(request, TaskHistoryPO.class);
        if(entity.getId() == null) {
            long id = foundationService.getNewId();
            entity.setId(id);
        }

        // 先检查关键数据是否有重复,在检查通过后才能做插入操作
        checkValidate(entity,passport,response);
        if(response.hasError()) {
            return response;
        }

        if (taskHistoryMapper.insert(entity, passport) == 0) {
            response.addError(ErrorType.EXPECTATION_NULL, Message.COMMON_CREATE_FAILURE);
            return response;
        }

        response.setId(entity.getId());
        return response;
    }
    
    /**
     * 更新任务编辑历史
     *
     * @param request 更新任务编辑历史请求
     * @param passport 用户护照
     * @return 更新任务编辑历史应答
     */
    @Override
public TaskHistoryUpdateResponse update(TaskHistoryUpdateRequest request, Passport passport) {
        TaskHistoryUpdateResponse response = new TaskHistoryUpdateResponse();

        TaskHistoryPO entity = this.getMapper().map(request, TaskHistoryPO.class);
        // 先检查关键数据是否有重复,在检查通过后才能做插入操作
        checkValidate(entity,passport,response);
        if(response.hasError()) {
            return response;
        }

        Long result=taskHistoryMapper.update(entity, passport);
        if (result != 1) {
            response.addError(ErrorType.BUSINESS_ERROR, Message.COMMON_UPDATE_FAILURE);
            return response;
        }
        response.setResult(result);
        return response;
    }
    
    /**
     * 删除任务编辑历史
     *
     * @param request 删除任务编辑历史请求
     * @param passport 用户护照
     * @return 删除任务编辑历史应答
     */
    @Override
    public TaskHistoryDeleteResponse delete(TaskHistoryDeleteRequest request, Passport passport) {
        TaskHistoryDeleteResponse response = new TaskHistoryDeleteResponse();
         Long result= taskHistoryMapper.delete(request.getId(), passport);
         response.setResult(result);
        return response;
    }
    
    

    /**
     * 验证对象
     * @param taskHistory 任务编辑历史
     * @param passport 用户护照
     */
    private void checkValidate(TaskHistoryPO taskHistory, Passport passport, BaseResponse response) {
        // TODO
    }
}