com.systop.fsmis.fscase.report.service.ReportManager.java Source code

Java tutorial

Introduction

Here is the source code for com.systop.fsmis.fscase.report.service.ReportManager.java

Source

package com.systop.fsmis.fscase.report.service;

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

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.xwork.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.systop.core.service.BaseGenericsManager;
import com.systop.core.util.ReflectUtil;
import com.systop.fsmis.FsConstants;
import com.systop.fsmis.model.Corp;
import com.systop.fsmis.model.FsCase;
import com.systop.fsmis.model.Task;
import com.systop.fsmis.model.TaskDetail;

/**
 * ?
 * @author DU
 *
 */
@SuppressWarnings("unchecked")
@Service
public class ReportManager extends BaseGenericsManager<FsCase> {

    /**
     * ???
     * @param fsCase 
     * @param task 
     * @param taskDetail ?
     */
    @Transactional
    public void saveReportInfoOfCase(FsCase fsCase, Task task, TaskDetail taskDetail, Corp corp, String corpName) {
        //??
        if (StringUtils.isNotBlank(corpName)) {
            //session??????
            getDao().clear();
            //?????
            Corp oldCorp = getCorpByName(corpName, fsCase.getCounty().getId());
            if (oldCorp != null) {
                fsCase.setCorp(oldCorp);
                fsCase.setIsMultiple(FsConstants.N);
                getDao().clear();
            } else {
                corp.setName(corpName);
                corp.setDept(fsCase.getCounty());
                getDao().save(corp);
                //??
                getDao().flush();
                fsCase.setCorp(corp);
                fsCase.setIsMultiple(FsConstants.N);
            }
        } else {
            fsCase.setCorp(null);
            fsCase.setIsMultiple(FsConstants.N);
        }
        //?
        save(fsCase);
        if (task != null && task.getId() != null) {
            Task oldTask = getDao().get(Task.class, task.getId());
            BeanUtils.copyProperties(task, oldTask);
            oldTask.setFsCase(fsCase);
            getDao().save(oldTask);
        } else {
            task.setFsCase(fsCase);
            getDao().save(task);
        }
        if (taskDetail != null && taskDetail.getId() != null) {
            TaskDetail oldTaskDetail = getDao().get(TaskDetail.class, taskDetail.getId());
            BeanUtils.copyProperties(taskDetail, oldTaskDetail);
            oldTaskDetail.setTask(task);
            getDao().save(oldTaskDetail);
        } else {
            taskDetail.setTask(task);
            getDao().save(taskDetail);
        }
    }

    /**
     * ?
     * @param caseId ID
     */
    @Transactional
    public void removeCase(Integer caseId) {
        FsCase fsCase = get(caseId);
        Set<Task> tasks = fsCase.getTaskses();
        for (Task task : tasks) {
            Set<TaskDetail> taskDetails = task.getTaskDetails();
            for (TaskDetail taskDetail : taskDetails) {
                getDao().delete(taskDetail);
            }
            getDao().delete(task);
        }
        getDao().delete(fsCase);
    }

    /**
     * ???
     * @param caseId ID
     */
    public Task getTaskOfCase(Integer caseId) {
        Task task = null;
        List<Task> taskList = getDao().query("from Task t where t.fsCase.id = ?", caseId);
        if (CollectionUtils.isNotEmpty(taskList)) {
            task = (Task) taskList.get(0);
        }
        return task;
    }

    /**
     * ?ID??
     * @param taskId ID
     * @param deptId ID
     */
    public TaskDetail getTaskDetailOfTask(Integer taskId, Integer deptId) {
        TaskDetail taskDetail = null;
        String hql = "from TaskDetail td where td.task.id = ? and td.dept.id = ?";
        List<TaskDetail> detailList = getDao().query(hql, taskId, deptId);
        if (CollectionUtils.isNotEmpty(detailList)) {
            taskDetail = (TaskDetail) detailList.get(0);
        }
        return taskDetail;
    }

    /**
     * ????ID???
     * @param corpName ???
     * @param countyId ID
     */
    private Corp getCorpByName(String corpName, Integer countyId) {
        Corp corp = null;
        String hql = "from Corp c where c.name = ? and c.dept.id = ?";
        List<Corp> corpList = getDao().query(hql, corpName, countyId);
        if (CollectionUtils.isNotEmpty(corpList)) {
            corp = (Corp) corpList.get(0);
        }
        return corp;
    }

    /**
     * ????ID???
     * @param corpName ???
     * @param countyId ID
     */
    public Map getCorpMapByName(String corpName, Integer countyId) {
        Map map = new HashMap();
        Corp corp = getCorpByName(corpName, countyId);
        if (corp != null) {
            map = ReflectUtil.toMap(corp, new String[] { "id", "name", "address", "legalPerson", "produceLicense",
                    "businessLicense", "sanitationLicense", "operateDetails" }, true);
        }

        return map;
    }

    /**
     * ?ID??
     * @param countyId ID
     */
    public String[] getCorpOfCounty(Integer countyId) {
        String[] corps = null;
        List<Corp> corpList = getDao().query("from Corp c where c.dept.id = ?", countyId);
        if (CollectionUtils.isNotEmpty(corpList)) {
            int arraySize = corpList.size();
            corps = new String[arraySize];
            for (int i = 0; i < arraySize; i++) {
                Corp corp = (Corp) corpList.get(i);
                corps[i] = (String) corp.getName();
            }
        }
        return corps;
    }
}