/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.plugin.visit.manager.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ewcms.core.site.dao.OrganDAO;
import com.ewcms.core.site.model.Organ;
import com.ewcms.plugin.visit.manager.dao.VisitDAO;
import com.ewcms.plugin.visit.manager.vo.InteractiveVo;
import com.ewcms.plugin.visit.util.DateTimeUtil;
import com.ewcms.web.vo.TreeGridNode;
@Service
public class InteractiveService implements InteractiveServiceable {
@Autowired
private VisitDAO visitDAO;
@Autowired
private OrganDAO organDAO;
@Override
public List<TreeGridNode> findInteractive(String startDate, String endDate) {
Date start = DateTimeUtil.getStringToDate(startDate);
Date end = DateTimeUtil.getStringToDate(endDate);
List<Organ> rootOrgans = organDAO.getOrganChildren(null);
List<TreeGridNode> nodes = new ArrayList<TreeGridNode>();
for (Organ organ : rootOrgans){
InteractiveVo vo = visitDAO.findInteractive(start, end, organ.getId());
if (vo == null) continue;
TreeGridNode node = new TreeGridNode();
node.setId(organ.getId());
node.setText(organ.getName());
node.setState("open");
node.setIconCls("icon-organ");
node.setData(vo);
findInteractiveChildNode(node, organ.getId(), start, end);
nodes.add(node);
}
return nodes;
}
private void findInteractiveChildNode(TreeGridNode parentNode, Integer parentId, Date start, Date end){
List<TreeGridNode> treeGridNodes = new ArrayList<TreeGridNode>();
List<Organ> organs = organDAO.getOrganChildren(parentId);
for (Organ organ : organs){
InteractiveVo vo = visitDAO.findInteractive(start, end, organ.getId());
if (vo == null) continue;
TreeGridNode treeGridNode = new TreeGridNode();
treeGridNode.setId(organ.getId());
treeGridNode.setText(organ.getName());
treeGridNode.setState("open");
treeGridNode.setIconCls("icon-organ");
treeGridNode.setData(vo);
findInteractiveChildNode(treeGridNode, organ.getId(), start, end);
treeGridNodes.add(treeGridNode);
}
parentNode.setChildren(treeGridNodes);
}
@Override
public List<TreeGridNode> findAdvisory(String startDate, String endDate) {
Date start = DateTimeUtil.getStringToDate(startDate);
Date end = DateTimeUtil.getStringToDate(endDate);
List<Organ> rootOrgans = organDAO.getOrganChildren(null);
List<TreeGridNode> nodes = new ArrayList<TreeGridNode>();
for (Organ organ : rootOrgans){
InteractiveVo vo = visitDAO.findAdvisory(start, end, organ.getId());
if (vo == null) continue;
TreeGridNode node = new TreeGridNode();
node.setId(organ.getId());
node.setText(organ.getName());
node.setState("open");
node.setIconCls("icon-organ");
node.setData(vo);
findAdvisoryChildNode(node, organ.getId(), start, end);
nodes.add(node);
}
return nodes;
}
private void findAdvisoryChildNode(TreeGridNode parentNode, Integer parentId, Date start, Date end){
List<TreeGridNode> treeGridNodes = new ArrayList<TreeGridNode>();
List<Organ> organs = organDAO.getOrganChildren(parentId);
for (Organ organ : organs){
InteractiveVo vo = visitDAO.findAdvisory(start, end, organ.getId());
if (vo == null) continue;
TreeGridNode treeGridNode = new TreeGridNode();
treeGridNode.setId(organ.getId());
treeGridNode.setText(organ.getName());
treeGridNode.setState("open");
treeGridNode.setIconCls("icon-organ");
treeGridNode.setData(vo);
findAdvisoryChildNode(treeGridNode, organ.getId(), start, end);
treeGridNodes.add(treeGridNode);
}
parentNode.setChildren(treeGridNodes);
}
}