/**
* 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.online.service;
import java.util.ArrayList;
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.citizen.dao.CitizenDAO;
import com.ewcms.plugin.citizen.model.Citizen;
import com.ewcms.plugin.online.dao.MatterAnnexDAO;
import com.ewcms.plugin.online.dao.MatterDAO;
import com.ewcms.plugin.online.model.Matter;
import com.ewcms.plugin.online.model.MatterAnnex;
import com.ewcms.plugin.online.util.FormatText;
/**
*
* @author 吴智俊
*/
@Service
public class MatterService implements MatterServiceable {
@Autowired
private MatterDAO matterDAO;
@Autowired
private MatterAnnexDAO matterAnnexDAO;
@Autowired
private OrganDAO organDAO;
@Autowired
private CitizenDAO citizenDAO;
@Override
public Integer addMatter(Matter matter, List<String> filePaths, List<String> legends) {
Matter isMatter = matterDAO.findMatterByMatterName(matter.getName());
if (isMatter != null) return null;
Long max_sort = matterDAO.findMatterMaxSort() + 1;
matter.setSort(max_sort);
List<MatterAnnex> matterAnnexs = new ArrayList<MatterAnnex>();
if (filePaths != null && filePaths.size() > 0){
for (int i = 0; i < filePaths.size(); i++){
MatterAnnex matterAnnex = new MatterAnnex();
matterAnnex.setUrl(filePaths.get(i));
matterAnnex.setLegend(legends.get(i));
matterAnnex.setSort(i + 1);
matterAnnexs.add(matterAnnex);
}
}
matter.setMatterAnnexs(matterAnnexs);
matterDAO.persist(matter);
return matter.getId();
}
@Override
public void delMatter(Integer matterId){
Matter matterVo = matterDAO.get(matterId);
Long sort = matterVo.getSort();
List<Matter> matterVos = matterDAO.findAll();
Integer size = matterVos.size();
matterDAO.removeByPK(matterId);
if (sort.intValue() != size.intValue()){
sort = 1L;
matterVos = matterDAO.findMatterAllOrderBySort();
for (Matter matter : matterVos){
matter.setSort(sort);
sort++;
matterDAO.merge(matter);
}
}
}
@Override
public Matter getMatter(Integer matterId) {
return matterDAO.get(matterId);
}
@Override
public Integer updMatter(Matter matter, List<Integer> matterAnnexIds, List<String> filePaths, List<String> legends) {
Matter isMatter = matterDAO.findMatterByMatterIdAndMatterName(matter.getId(), matter.getName());
if (isMatter != null) return null;
Matter matter_old = matterDAO.get(matter.getId());
matter_old.setAcceptedCondition(matter.getAcceptedCondition());
matter_old.setAcceptedWay(matter.getAcceptedWay());
matter_old.setConsultingTel(matter.getConsultingTel());
matter_old.setContactName(matter.getContactName());
matter_old.setContactTel(matter.getContactTel());
matter_old.setDeadline(matter.getDeadline());
matter_old.setDepartment(matter.getDepartment());
matter_old.setEmail(matter.getEmail());
matter_old.setFees(matter.getFees());
matter_old.setFeesBasis(matter.getFeesBasis());
matter_old.setHandleBasis(matter.getHandleBasis());
matter_old.setHandleCourse(matter.getHandleCourse());
matter_old.setHandleSite(matter.getHandleSite());
matter_old.setHandleWay(matter.getHandleWay());
matter_old.setName(matter.getName());
matter_old.setPetitionMaterial(matter.getPetitionMaterial());
matter_old.setTimeLimit(matter.getTimeLimit());
matter_old.setInfoUrl(matter.getInfoUrl());
matter_old.setOnlinePayUrl(matter.getOnlinePayUrl());
matter_old.setServiceObject(matter.getServiceObject());
int order = 0;
List<MatterAnnex> matterAnnexs = new ArrayList<MatterAnnex>();
if (matterAnnexIds != null && !matterAnnexIds.isEmpty()){
order = matterAnnexIds.size();
for (int i = 0; i < matterAnnexIds.size(); i++){
MatterAnnex matterAnnex = matterAnnexDAO.get(matterAnnexIds.get(i));
if (matterAnnex == null) continue;
if (filePaths.get(i) != null && filePaths.get(i).length() > 0)
matterAnnex.setUrl(filePaths.get(i));
if (legends.get(i) != null && legends.get(i).length() > 0)
matterAnnex.setLegend(legends.get(i));
matterAnnexs.add(matterAnnex);
}
}
if (filePaths != null && !filePaths.isEmpty()){
for (int i = order; i < filePaths.size(); i++){
MatterAnnex matterAnnex = new MatterAnnex();
matterAnnex.setUrl(filePaths.get(i));
matterAnnex.setLegend(legends.get(i));
matterAnnex.setSort(i + 1);
matterAnnexs.add(matterAnnex);
}
}
matter_old.setMatterAnnexs(matterAnnexs);
matterDAO.merge(matter_old);
return matter.getId();
}
@Override
public void downMatter(Integer matterId) {
if (matterId == null) return;
Matter matter = matterDAO.get(matterId);
if (matter == null) return;
Long sort = matter.getSort();
Long maxSort = matterDAO.findMatterMaxSort();
if (sort == null || sort.intValue() >= maxSort.intValue()) return;
Matter matter_next = matterDAO.findMatterBySort(sort + 1);
if (matter_next == null) return;
matter.setSort(sort + 1);
matterDAO.merge(matter);
matter_next.setSort(sort);
matterDAO.merge(matter_next);
}
@Override
public void upMatter(Integer matterId) {
if (matterId == null) return;
Matter matter = matterDAO.get(matterId);
if (matter == null) return;
Long sort = matter.getSort();
if (sort == null || sort.intValue() <= 1) return;
Matter matter_prv = matterDAO.findMatterBySort(sort - 1);
if (matter_prv == null) return;
matter.setSort(sort - 1);
matterDAO.merge(matter);
matter_prv.setSort(sort);
matterDAO.merge(matter_prv);
}
@Override
public List<Matter> getMatterAllOrderBySort() {
return matterDAO.findMatterAllOrderBySort();
}
@Override
public String addOrganToMatter(Integer matterId, Integer organId){
if (matterId == null || organId == null) return "";
Matter matter = matterDAO.get(matterId);
Organ organ = organDAO.get(organId);
matter.setOrgan(organ);
matterDAO.merge(matter);
return tranformMatterText(matter);
}
@Override
public String removeOrganFromMatter(Integer matterId){
if (matterId == null) return "";
Matter matter = matterDAO.get(matterId);
matter.setOrgan(null);
matterDAO.merge(matter);
return tranformMatterText(matter);
}
private String tranformMatterText(Matter matter){
String organName = "";
Organ organ = matter.getOrgan();
if (organ != null) {
organName = FormatText.ORGAN_NAME_BEGIN + organ.getName() + FormatText.ORGAN_NAME_END;
}
String citizenName = "";
List<Citizen> citizens = matter.getCitizens();
if (citizens != null && !citizens.isEmpty()){
for (Citizen citizen : citizens){
citizenName = citizenName + "," + citizen.getName();
}
citizenName = citizenName.substring(1);
citizenName = FormatText.CITIZEN_NAME_BEGIN + citizenName + FormatText.CITIZEN_NAME_END;
}
return matter.getName() + organName + citizenName;
}
@Override
public String addCitizenToMatter(Integer matterId, List<Integer> citizenIds){
if (matterId == null) return "";
if (citizenIds == null || citizenIds.isEmpty()) return "";
Matter matter = matterDAO.get(matterId);
List<Citizen> citizens = new ArrayList<Citizen>();
for (Integer citizenId : citizenIds){
Citizen citizen = citizenDAO.get(citizenId);
citizens.add(citizen);
}
matter.setCitizens(citizens);
matterDAO.merge(matter);
return tranformMatterText(matter);
}
@Override
public String removeCitizenFromMatter(Integer matterId){
if (matterId == null) return "";
Matter matter = matterDAO.get(matterId);
matter.setCitizens(null);
matterDAO.merge(matter);
return tranformMatterText(matter);
}
}