package com.ycsoft.sysmanager.component.project; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.springframework.stereotype.Component; import com.ycsoft.beans.project.RProject; import com.ycsoft.beans.project.RProjectAddr; import com.ycsoft.beans.project.RProjectCounty; import com.ycsoft.business.dao.config.TAddressDao; import com.ycsoft.business.dao.project.RProjectAddrDao; import com.ycsoft.business.dao.project.RProjectCountyDao; import com.ycsoft.business.dao.project.RProjectDao; import com.ycsoft.business.dto.config.TAddressDto; import com.ycsoft.business.dto.project.QueryProject; import com.ycsoft.commons.abstracts.BaseComponent; import com.ycsoft.commons.helper.StringHelper; import com.ycsoft.daos.core.Pager; @Component public class ProjectComponent extends BaseComponent { private RProjectDao rProjectDao; private RProjectAddrDao rProjectAddrDao; private RProjectCountyDao rProjectCountyDao; private TAddressDao tAddressDao; public Pager<RProject> queryProject(QueryProject queryProject,String countyId,Integer start,Integer limit) throws Exception { return rProjectDao.queryProject(queryProject,countyId,start,limit); } public String saveProject(RProject project) throws Exception { String result = ""; String projectId = project.getProject_id(); if(StringHelper.isEmpty(projectId)){ project.setProject_id(rProjectDao.findSequence().toString()); rProjectDao.save(project); }else{ RProject p = rProjectDao.findByKey(project.getProject_id()); //未修改项目编号,无需检查 if(p.getProject_number().equals(project.getProject_number())){ project.setChange_date(new Date()); rProjectDao.update(project); }else{ //修改项目时,是否有小区关联 List<RProjectAddr> paList = rProjectAddrDao.queryAddrByProjectId(project.getProject_id()); List<RProject> list = null; //有小区关联,检查项目编号顺序码是否有重复 if(paList != null && paList.size() > 0){ List<String> addrIdList = new ArrayList<String>(); for(RProjectAddr pa : paList){ addrIdList.add(pa.getAddr_id()); } list = rProjectDao.checkProjectOrderCode(project .getProject_id(), project.getProject_number(), addrIdList.toArray(new String[addrIdList.size()])); //没有重复的,修改项目信息 if(list == null || list.size() == 0){ project.setChange_date(new Date()); rProjectDao.update(project); }else{ //有重复的,给予提示 for(RProject rp : list){ result += rp.getAddr_name()+","; } result = result.substring(0,result.length()-1); } }else{ //没有小区关联,直接修改 project.setChange_date(new Date()); rProjectDao.update(project); } } } return result; } /** * 项目小区关联 * @param projectId * @param addrIds * @throws Exception */ public String saveLinkedProject(String projectId, String addrIds) throws Exception { String[] addrIdArr = addrIds.split(","); RProject project = rProjectDao.findByKey(projectId); List<RProject> list = rProjectDao.checkProjectOrderCode(project .getProject_id(), project.getProject_number(), addrIdArr); String result = ""; if(list == null || list.size() == 0){ rProjectAddrDao.deleteByProjectId(projectId); if(StringHelper.isNotEmpty(addrIds)){ List<RProjectAddr> paList = new ArrayList<RProjectAddr>(); for(String addrId : addrIdArr){ RProjectAddr pa = new RProjectAddr(); pa.setProject_id(projectId); pa.setAddr_id(addrId); paList.add(pa); } rProjectAddrDao.save(paList.toArray(new RProjectAddr[paList.size()])); } }else{ for(RProject p : list){ result += p.getAddr_name()+","; } result = result.substring(0,result.length()-1); } return result; } public List<RProjectAddr> queryAddrByProjectId(String projectId) throws Exception { return rProjectAddrDao.queryAddrByProjectId(projectId); } public void isInvalid(String projectId,String isValid) throws Exception { rProjectDao.isInvalid(projectId, isValid); } public List<TAddressDto> queryAddrDistrict(String countyId) throws Exception { return tAddressDao.queryAddrDistrict(countyId); } public List<RProjectCounty> queryByCountyId(String countyId) throws Exception { return rProjectCountyDao.queryByCountyId(countyId); } /** * 检查项目编号是否存在 * @param projectNumber * @return false 不存在,true 存在 * @throws Exception */ public boolean checkProjectNumber(String projectNumber) throws Exception { return rProjectDao.checkProjectNumber(projectNumber); } public List<TAddressDto> queryAddrCommunity(String addrPid) throws Exception { return tAddressDao.queryAddrCommunity(addrPid); } public void setRProjectAddrDao(RProjectAddrDao projectAddrDao) { rProjectAddrDao = projectAddrDao; } public void setRProjectCountyDao(RProjectCountyDao projectCountyDao) { rProjectCountyDao = projectCountyDao; } public void setRProjectDao(RProjectDao projectDao) { rProjectDao = projectDao; } public void setTAddressDao(TAddressDao addressDao) { tAddressDao = addressDao; } }