Newer
Older
EMS-WEB-3.0 / src / main / java / com / casic / accessControl / event / manager / EventManager.java
wxn on 15 Aug 2016 4 KB 点击展示图片
package com.casic.accessControl.event.manager;

import com.casic.accessControl.core.hibernate.HibernateEntityDao;
import com.casic.accessControl.event.domain.Event;
import com.casic.accessControl.event.dto.EventDto;
import com.casic.accessControl.task.dto.TaskDto;
import com.casic.accessControl.util.DateUtils;
import org.apache.xmlbeans.impl.xb.xsdschema.RestrictionDocument;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import sun.misc.BASE64Decoder;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by lenovo on 2016/8/11.
 */
@Service
public class EventManager extends HibernateEntityDao<Event> {
    /**
     * 根据用户和所属任务 获取事件列表
     *
     * @param taskId
     * @return
     */
    public List<EventDto> getEventsByTaskId(Long taskId) {
       List<Event> events = this.findBy("taskId",taskId);
//        Criteria criteria = this.createCriteria(Event.class);
//        criteria.add(Restrictions.eq("taskId",taskId));
//        List<Event> events = criteria.list();
        List<EventDto> eventDtos = EventDto.convert2EventDtoList(events);
        return eventDtos;
    }

    /**
     * 根据事件Id获取事件内容
     *
     * @param eventId
     * @return
     */
    public EventDto getEventById(Long eventId) {
        Event event = this.get(eventId);
        EventDto eventDto = EventDto.convert2EventDto(event);
        return eventDto;
    }

    /**
     * 根据事件ID删除事件信息
     *
     * @param eventId
     * @return
     */
    public boolean deleteEventById(Long eventId) {
        this.removeById(eventId);
        return true;
    }

    /**
     * 上传时间信息
     *
     * @param eventInfo
     * @param taskInfo
     * @param fileNames
     * @param fileBuffers
     * @return
     */
    public Map saveEvent(EventDto eventInfo, TaskDto taskInfo,
                         String[] fileNames, String[] fileBuffers) {
        Map map = new HashMap<String, Object>();
        try {
            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
            String strDirPath = request.getSession().getServletContext().getRealPath("");

            //TODO LIST:新建event
            Event event = new Event();
            //TODO LIST:保存图片
            FileOutputStream fos = null;
            String toDir = strDirPath + "/eventImage";   //存储路径
            String fileName = "";
            for (int i = 0; i < fileBuffers.length; i++) {
                if (fileBuffers[i] != null && fileNames[i] != null) {
                    fileName += fileNames[i] + ",";
                    byte[] buffer = new BASE64Decoder().decodeBuffer(fileBuffers[i]);   //对android传过来的图片字符串进行解码
                    File destDir = new File(toDir);
                    if (!destDir.exists())
                        destDir.mkdirs();
                    File imageFile = new File(destDir, fileNames[i]);
                    fos = new FileOutputStream(imageFile);   //保存图片
                    fos.write(buffer);
                    fos.flush();
                    fos.close();
                }
            }
            event.setImageName(fileName);
            event.setLatitude(eventInfo.getLatitude() == null ? 0 : eventInfo.getLatitude());
            event.setLongitude(eventInfo.getLongitude() == null ? 0 : eventInfo.getLongitude());
            event.setCreateTime(eventInfo.getCreateTime().equalsIgnoreCase("") ? null : DateUtils.sdf2.parse(eventInfo.getCreateTime()));
            event.setDescription(eventInfo.getDescription());
            event.setTaskId(taskInfo.getId());
            save(event);
            map.put("uploadFile", "上传成功!" + "图片路径为:" + toDir + "//" + fileName);
            return map;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


}