package com.norteksoft.portal.service; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.concurrent.CountDownLatch; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.http.client.HttpClient; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.struts2.ServletActionContext; import org.hibernate.FlushMode; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessResourceFailureException; import org.springframework.orm.hibernate3.SessionFactoryUtils; import org.springframework.orm.hibernate3.SessionHolder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.support.TransactionSynchronizationManager; import com.norteksoft.acs.entity.authorization.BusinessSystem; import com.norteksoft.acs.entity.organization.Company; import com.norteksoft.acs.service.authorization.AcsApiManager; import com.norteksoft.acs.service.organization.CompanyManager; import com.norteksoft.bs.options.service.OptionGroupManager; import com.norteksoft.mms.base.data.DataHandle; import com.norteksoft.mms.base.data.DataSheetConfig; import com.norteksoft.mms.base.data.DataTransfer; import com.norteksoft.mms.base.data.FileConfigModel; import com.norteksoft.portal.base.enumeration.ControlType; import com.norteksoft.portal.base.enumeration.StaticVariable; import com.norteksoft.portal.dao.ThemeDao; import com.norteksoft.portal.dao.UserThemeDao; import com.norteksoft.portal.dao.WebpageDao; import com.norteksoft.portal.dao.WidgetConfigDao; import com.norteksoft.portal.dao.WidgetDao; import com.norteksoft.portal.dao.WidgetParameterDao; import com.norteksoft.portal.dao.WidgetParameterValueDao; import com.norteksoft.portal.dao.WidgetRoleDao; import com.norteksoft.portal.entity.Theme; import com.norteksoft.portal.entity.UserTheme; import com.norteksoft.portal.entity.Webpage; import com.norteksoft.portal.entity.Widget; import com.norteksoft.portal.entity.WidgetConfig; import com.norteksoft.portal.entity.WidgetParameter; import com.norteksoft.portal.entity.WidgetParameterValue; import com.norteksoft.portal.entity.WidgetRole; import com.norteksoft.portal.web.index.WidgetThread; import com.norteksoft.product.api.ApiFactory; import com.norteksoft.product.api.entity.Role; import com.norteksoft.product.api.utils.BeanUtil; import com.norteksoft.product.enumeration.DataState; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.ContextUtils; import com.norteksoft.product.util.JsonParser; import com.norteksoft.product.util.ParameterUtils; import com.norteksoft.product.util.PropUtils; import com.norteksoft.product.util.SystemUrls; import com.norteksoft.product.util.ThreadParameters; import com.norteksoft.product.util.ThreadPool; import com.norteksoft.product.util.freemarker.TagUtil; @SuppressWarnings("deprecation") @Service @Transactional public class IndexManager implements DataTransfer { @Autowired private WebpageDao webPageDao; @Autowired private WidgetConfigDao widgetConfigDao; @Autowired private WidgetDao widgetDao; @Autowired private WidgetParameterDao widgetParameterDao; @Autowired private WidgetParameterValueDao widgetParameterValueDao; @Autowired private UserThemeDao userThemeDao; @Autowired private AcsApiManager acsApiManager; @Autowired private WidgetRoleDao widgetRoleDao; @Autowired private ThemeDao themeDao; @Autowired private OptionGroupManager optionGroupManager; @Autowired private DataHandle dataHandle; @Autowired private CompanyManager companyManager; private Log log = LogFactory.getLog(getClass()); public static StringBuilder resultHtml; @Transactional public Widget getWdigetById(Long id){ return widgetDao.get(id); } @Transactional public Webpage getWebpageById(Long id){ Webpage webpage = webPageDao.get(id); return webpage; } public Webpage getWebpageByCode(String code){ Webpage webpage = webPageDao.getWebpageByCode(code); List<WidgetConfig> widgetConfigs = widgetConfigDao.getCustomerWidgetConfigs(webpage.getId()); List<Widget> leftWidgets = new ArrayList<Widget>(); List<Widget> centerWidgets = new ArrayList<Widget>(); List<Widget> rightWidgets = new ArrayList<Widget>(); List<Widget> widgetList = getWidgetsByBuyerAndAuthority(); for(WidgetConfig config:widgetConfigs){ Widget widget = widgetDao.get(config.getWidgetId()); widget.setParameters(getParametersByWidget(widget.getId())); widget.setSystemUrl(SystemUrls.getSystemUrl(widget.getSystemCode())); switch (config.getPosition()) { case 0: if(widgetList.contains(widget)){ leftWidgets.add(widget); } break; case 1: if(widgetList.contains(widget)){ centerWidgets.add(widget); } break; case 2: if(widgetList.contains(widget)){ rightWidgets.add(widget); } break; } } webpage.setLeftWidgets(leftWidgets); webpage.setCenterWidgets(centerWidgets); webpage.setRightWidgets(rightWidgets); return webpage; } public String getWidgetIdsByWebpage(Long webpageId){ Webpage webpage = getWebpageById(webpageId); List<WidgetConfig> widgetConfigs = widgetConfigDao.getCustomerWidgetConfigs(webpage.getId()); StringBuilder widgetIds = new StringBuilder(); List<Widget> widgetList = getWidgetsByBuyerAndAuthority(); for(WidgetConfig config:widgetConfigs){ Widget widget = widgetDao.get(config.getWidgetId()); widget.setParameters(getParametersByWidget(widget.getId())); widget.setSystemUrl(SystemUrls.getSystemUrl(widget.getSystemCode())); switch (config.getPosition()) { case 0: if(widgetList.contains(widget)){ widgetIds.append(widget.getId()).append(","); } break; case 1: if(widgetList.contains(widget)){ widgetIds.append(widget.getId()).append(","); } break; case 2: if(widgetList.contains(widget)){ widgetIds.append(widget.getId()).append(","); } break; } } if(widgetIds.length()>0&&widgetIds.charAt(widgetIds.length()-1)==',')widgetIds.deleteCharAt(widgetIds.length()-1); return widgetIds.toString(); } /** * 删除页签 * @param id */ public void deleteWebpage(Long id){ widgetConfigDao.batchExecute("delete WidgetConfig wc where wc.webpageId=?", id); webPageDao.delete(id); } /** * 获取用户的所有页签 * @param userId * @return */ public List<Webpage> getWebpagesByUser() throws CloneNotSupportedException{ List<Webpage> webpages = webPageDao.getWebpageByUserId(); if(webpages.isEmpty()){ Webpage model = webPageDao.getWebpage(); if(model!=null){ Webpage webPage = new Webpage(); webPage.setAcquiescent(true); webPage.setName(model.getName()); webPage.setUserId(ContextUtils.getUserId()); webPage.setColumns(model.getColumns()); webPage.setCompanyId(ContextUtils.getCompanyId()); webPage.setCreatedTime(new Date()); webPage.setDisplayOrder(StaticVariable.DEFAULT_SEQUENCE_VALUE); webPage.setUrl(model.getUrl()); webPage.setWidgetPosition(model.getWidgetPosition()); webPageDao.save(webPage); saveDefaultWidgetByUser(webPage.getId(),model.getColumns()); webpages.add(webPage); } } return webpages; } /** * 为用户设置默认的小窗体 * @param webPageId */ private void saveDefaultWidgetByUser(Long webPageId,int columnSize){ List<List<Long>> lists=getWidgetIds(webPageId); List<Long> leftIds=lists.get(0); List<Long> centerIds=lists.get(1); List<Long> rightIds=lists.get(2); List<Widget> defaultWidgets = widgetDao.getWidgets(); for(int i=0;i<defaultWidgets.size();i++){ if(!isExistentInWidgetConfig(webPageId,defaultWidgets.get(i).getId())){ WidgetConfig config = new WidgetConfig(); config.setWebpageId(webPageId); config.setWidgetId(defaultWidgets.get(i).getId()); config.setUserId(ContextUtils.getUserId()); Widget widget = widgetDao.get(config.getWidgetId()); if(leftIds.contains(widget.getId())){ config.setPosition(StaticVariable.POSITION_LEFT); } if(centerIds.contains(widget.getId())){ config.setPosition(StaticVariable.POSITION_CENTER); } if(rightIds.contains(widget.getId())){ config.setPosition(StaticVariable.POSITION_RIGHT); } if(config.getPosition()==null){ config.setPosition(StaticVariable.POSITION_LEFT); } // config.setPosition(StaticVariable.POSITION_LEFT); // if(StaticVariable.OA_DIRECT_TRAIN.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_LEFT); // }else if(StaticVariable.SCHEDULE_TASK.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_CENTER); // if(columnSize==2){ // config.setPosition(StaticVariable.POSITION_LEFT); // } // }else if(StaticVariable.SCHEDULE.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_RIGHT); // }else if(StaticVariable.MAIL.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_RIGHT); // }else if(StaticVariable.NOTICE.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_RIGHT); // }else if(StaticVariable.VOTE.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_LEFT); // }else if(StaticVariable.NEWS.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_LEFT); // }else if(StaticVariable.OVERTIMENOTICE.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_LEFT); // }else if(StaticVariable.COUNTDOWNCARD.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_LEFT); // }else if(StaticVariable.INNERDISCUSS.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_LEFT); // }else if(StaticVariable.MYBORROWRECORD.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_CENTER); // if(columnSize==2){ // config.setPosition(StaticVariable.POSITION_RIGHT); // } // }else if(StaticVariable.NEWBOOK.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_CENTER); // if(columnSize==2){ // config.setPosition(StaticVariable.POSITION_RIGHT); // } // }else if(StaticVariable.MYWORKREPORT.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_CENTER); // if(columnSize==2){ // config.setPosition(StaticVariable.POSITION_RIGHT); // } // }else if(StaticVariable.LASTDOCUMENT.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_CENTER); // if(columnSize==2){ // config.setPosition(StaticVariable.POSITION_RIGHT); // } // }else if(StaticVariable.ONLINETIMELONG.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_CENTER); // if(columnSize==2){ // config.setPosition(StaticVariable.POSITION_RIGHT); // } // }else if(StaticVariable.COMMONCOMMUNICATIONBOOK.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_CENTER); // if(columnSize==2){ // config.setPosition(StaticVariable.POSITION_RIGHT); // } // }else if(StaticVariable.MYRETURNOFFICESUPPLIES.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_RIGHT); // }else if(StaticVariable.BIRTHDAYNOTICE.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_RIGHT); // }else if(StaticVariable.STICKYNOTE.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_RIGHT); // }else if(StaticVariable.FAVORITEURL.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_RIGHT); // }else if(StaticVariable.MYFAVORITE.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_RIGHT); // }else if(StaticVariable.STAFFSEARCH.equals(defaultWidgets.get(i).getName())){ // config.setPosition(StaticVariable.POSITION_RIGHT); // } widgetConfigDao.save(config); } } } private boolean isExistentInWidgetConfig(Long webPageId,Long widgetId){ WidgetConfig config = widgetConfigDao .getWidgetConfig( webPageId, widgetId); if(config == null){ return false; } return true; } /** * 获取所有窗口model * @return */ public List<Widget> getAllWidgets(Long webpageId){ List<Widget> wdigets = null; List<WidgetConfig> configs = widgetConfigDao.getWidgetConfigs(webpageId); List<Widget> model = getWidgetsByBuyerAndAuthority(); //这个页签是否有初始化小窗体 if(configs==null||configs.size()<=0){ wdigets = model; }else{ wdigets = new ArrayList<Widget>(); List<Long> ids = new ArrayList<Long>(); for(WidgetConfig c:configs){ Long id = c.getWidgetId(); ids.add(id); } for(Widget w:model){ if(!isExistentInList(w.getId(),ids)){ wdigets.add(w); } } } return wdigets; } private boolean isExistentInList(Long id,List<Long> ids){ boolean existence = false; for(Long uid:ids){ if(uid==id){ existence = true; break; } } return existence; } /** * 保存页签 * @param webpageName * @param columnSize */ public Webpage saveWebpage(String webpageName, int columnSize, Long webpageId){ Webpage webPage = null; if(webpageId == null){ webPage = new Webpage(); int maxSize = webPageDao.getMaxPageOrderNumber()+1; webPage.setName(webpageName); webPage.setUserId(ContextUtils.getUserId()); webPage.setColumns(columnSize); webPage.setCompanyId(ContextUtils.getCompanyId()); webPage.setCreatedTime(new Date()); webPage.setDisplayOrder(maxSize); webPage.setUrl("/index/index.htm"); webPage.setWidgetPosition("widget-place-left=|widget-place-center=|widget-place-right="); }else{ webPage = webPageDao.get(webpageId); webPage.setName(webpageName); //修改小窗体列数时更新小窗体位置 updateWebpageColumn(webPage,columnSize); } webPageDao.save(webPage); return webPage; } /** * 修改小窗体列数时更新小窗体位置 * @param webPage * @param columnSize */ private void updateWebpageColumn(Webpage webPage,int columnSize){ if(webPage.getColumns().equals(3)&&columnSize==2){//3栏变2栏,中栏的小窗体挪到左栏中 String postion = webPage.getWidgetPosition(); String[] pos = postion.split("\\|"); String centerPos = pos[1]; String leftPos = pos[0]; String rightPos = pos[2]; String[] centerPosIds = centerPos.split("="); if(centerPosIds.length>1){//如果中栏有小窗体 String centerIdStrs = centerPosIds[1]; leftPos=leftPos+","+centerIdStrs; } String newPosition = leftPos+"|widget-place-center=|"+rightPos; webPage.setWidgetPosition(newPosition); //更新人员小窗体配置信息 List<WidgetConfig> widgetConfigs = widgetConfigDao.getWidgetConfigs(webPage.getId()); for(WidgetConfig conf:widgetConfigs){ if(conf.getPosition().equals(1)){//如果是中栏 conf.setPosition(0);//改为左栏 widgetConfigDao.save(conf); } } }else if(webPage.getColumns().equals(3)&&columnSize==1){//3栏变1栏,将中栏和右栏的小窗体挪到左栏中 String postion = webPage.getWidgetPosition(); String[] pos = postion.split("\\|"); String centerPos = pos[1]; String leftPos = pos[0]; String rightPos = pos[2]; String[] centerPosIds = centerPos.split("="); if(centerPosIds.length>1){//如果中栏有小窗体,挪到左栏中 String centerIdStrs = centerPosIds[1]; leftPos=leftPos+","+centerIdStrs; } String[] rightPosIds = rightPos.split("="); if(rightPosIds.length>1){//如果右栏有小窗体,挪到左栏中 String rightIdStrs = rightPosIds[1]; leftPos=leftPos+","+rightIdStrs; } String newPosition = leftPos+"|widget-place-center=|widget-place-right="; webPage.setWidgetPosition(newPosition); //更新人员小窗体配置信息 List<WidgetConfig> widgetConfigs = widgetConfigDao.getWidgetConfigs(webPage.getId()); for(WidgetConfig conf:widgetConfigs){ if(conf.getPosition().equals(1)||conf.getPosition().equals(2)){//如果是中栏或右栏 conf.setPosition(0);//改为左栏 widgetConfigDao.save(conf); } } }else if(webPage.getColumns().equals(2)&&columnSize==1){//2栏变1栏,将右栏的小窗体挪到左栏中 String postion = webPage.getWidgetPosition(); String[] pos = postion.split("\\|"); String leftPos = pos[0]; String rightPos = pos[2]; String[] rightPosIds = rightPos.split("="); if(rightPosIds.length>1){//如果右栏有小窗体,挪到左栏中 String rightIdStrs = rightPosIds[1]; leftPos=leftPos+","+rightIdStrs; } String newPosition = leftPos+"|widget-place-center=|widget-place-right="; webPage.setWidgetPosition(newPosition); //更新人员小窗体配置信息 List<WidgetConfig> widgetConfigs = widgetConfigDao.getWidgetConfigs(webPage.getId()); for(WidgetConfig conf:widgetConfigs){ if(conf.getPosition().equals(2)){//如果是右栏 conf.setPosition(0);//改为左栏 widgetConfigDao.save(conf); } } } webPage.setColumns(columnSize); } public void saveWebpage(Webpage webPage){ webPageDao.save(webPage); } /** * 获取页签 * @param id * @return */ public Webpage getCurrentWebpage(Long webpageId){ StringBuilder leftpostion=new StringBuilder("widget-place-left="); StringBuilder centerpostion=new StringBuilder("widget-place-center="); StringBuilder rightpostion=new StringBuilder("widget-place-right="); Webpage entity = webPageDao.get(webpageId); List<WidgetConfig> widgetConfigs = widgetConfigDao.getWidgetConfigs(webpageId); List<Widget> leftWidgets = new ArrayList<Widget>(); List<Widget> centerWidgets = new ArrayList<Widget>(); List<Widget> rightWidgets = new ArrayList<Widget>(); List<Widget> widgetList = getWidgetsByBuyerAndAuthority(); List<List<Long>> lists=getWidgetIds(webpageId); //通过webpage的widgetPostion获得以下小窗体id List<Long> leftIds=lists.get(0); List<Long> centerIds=lists.get(1); List<Long> rightIds=lists.get(2); //用于存放实际存在的小窗体id List<Long> reallyleftIds=new ArrayList<Long>(); List<Long> reallycenterIds=new ArrayList<Long>(); List<Long> reallyrightIds=new ArrayList<Long>(); for(WidgetConfig config:widgetConfigs){ Widget widget = widgetDao.get(config.getWidgetId()); widget.setParameters(getParametersByWidget(widget.getId())); widget.setSystemUrl(SystemUrls.getSystemUrl(widget.getSystemCode())); switch (config.getPosition()) { case 0: if(widgetList.contains(widget)){ reallyleftIds.add(widget.getId()); leftWidgets.add(widget); } break; case 1: if(widgetList.contains(widget)){ reallycenterIds.add(widget.getId()); centerWidgets.add(widget); } break; case 2: if(widgetList.contains(widget)){ reallyrightIds.add(widget.getId()); rightWidgets.add(widget); } break; } } entity.setLeftWidgets(leftWidgets); entity.setCenterWidgets(centerWidgets); entity.setRightWidgets(rightWidgets); //更新各窗体存放位置 //左侧小窗体 if(leftIds.size()<=0){ //获得webpage的widgetPostion中不存在,但really...中存在的小窗体的id for(Long widgetId:reallyleftIds){ leftpostion.append("identifierwidget-").append(widgetId).append(","); } }else{ //获得webpage的widgetPostion中存在,且really...中存在的小窗体的id for(Long widgetId:leftIds){ if(reallyleftIds.contains(widgetId)){ leftpostion.append("identifierwidget-").append(widgetId).append(","); } } //获得webpage的widgetPostion中不存在,但really...中存在的小窗体的id for(Long widgetId:reallyleftIds){ if(!leftIds.contains(widgetId)){ leftpostion.append("identifierwidget-").append(widgetId).append(","); } } } //中间小窗体 if(centerIds.size()<=0){ //获得webpage的widgetPostion中不存在,但really...中存在的小窗体的id for(Long widgetId:reallycenterIds){ centerpostion.append("identifierwidget-").append(widgetId).append(","); } }else{ //获得webpage的widgetPostion中存在,且really...中存在的小窗体的id for(Long widgetId:centerIds){ if(reallycenterIds.contains(widgetId)){ centerpostion.append("identifierwidget-").append(widgetId).append(","); } } //获得webpage的widgetPostion中不存在,但really...中存在的小窗体的id for(Long widgetId:reallycenterIds){ if(!centerIds.contains(widgetId)){ centerpostion.append("identifierwidget-").append(widgetId).append(","); } } } //右侧小窗体 if(rightIds.size()<=0){ //获得webpage的widgetPostion中不存在,但really...中存在的小窗体的id for(Long widgetId:reallyrightIds){ rightpostion.append("identifierwidget-").append(widgetId).append(","); } }else{ //获得webpage的widgetPostion中存在,且really...中存在的小窗体的id for(Long widgetId:rightIds){ if(reallyrightIds.contains(widgetId)){ rightpostion.append("identifierwidget-").append(widgetId).append(","); } } //获得webpage的widgetPostion中不存在,但really...中存在的小窗体的id for(Long widgetId:reallyrightIds){ if(!rightIds.contains(widgetId)){ rightpostion.append("identifierwidget-").append(widgetId).append(","); } } } if(leftpostion.length()>0&&leftpostion.charAt(leftpostion.length()-1)==',')leftpostion=leftpostion.deleteCharAt(leftpostion.length()-1); if(centerpostion.length()>0&¢erpostion.charAt(centerpostion.length()-1)==',')centerpostion=centerpostion.deleteCharAt(centerpostion.length()-1); if(rightpostion.length()>0&&rightpostion.charAt(rightpostion.length()-1)==',')rightpostion=rightpostion.deleteCharAt(rightpostion.length()-1); entity.setWidgetPosition(leftpostion.append("|").append(centerpostion).append("|").append(rightpostion).toString()); return entity; } private List<WidgetParameter> getParametersByWidget(Long widgetId){ List<WidgetParameter> parameters = widgetParameterDao.getWidgetParameters( widgetId); for(int i=0;i<parameters.size();i++){ List<WidgetParameterValue> wpvs = widgetParameterValueDao.getWidgetParameterValues(parameters.get(i).getId()); parameters.get(i).setParameterValues(wpvs); } return parameters; } /** * 取出窗口的所有参数&参数值&用户已设置的参数 * @param widgetId * @return */ public List<WidgetParameter> getParameters(Long widgetId){ List<WidgetParameter> wps = widgetParameterDao.getWidgetParameters(widgetId); return wps; } /** * 根据widgetId得打小窗体的名字 * @param widgetId * @return */ public String getWidgetNameById(Long widgetId){ Widget widget=widgetDao.getWidgetById(widgetId); String widgetName = widget.getName().toString(); return widgetName; } /** * 保存用户参数设置 */ public void saveParameterValues(){ String widgetId = ServletActionContext.getRequest().getParameter("widgetId"); String webpageId = ServletActionContext.getRequest().getParameter("webpageId"); List<WidgetParameter> parameters = widgetParameterDao.getWidgetParameters(Long.parseLong(widgetId)); for(WidgetParameter parameter:parameters){ List<WidgetParameterValue> parameterValues = widgetParameterValueDao.getWidgetParameterValuesByUserIdAndWebpageId(parameter.getId(),Long.parseLong(webpageId)); String parameterValue = ServletActionContext.getRequest().getParameter(parameter.getCode()); if(StringUtils.isNotEmpty(parameterValue)){//只有存在值的时候我才去更新或新建一个WidgetParameterValue if(parameterValues == null || parameterValues.size() == 0){//新建 WidgetParameterValue newParameterValue = new WidgetParameterValue(); newParameterValue.setValue(parameterValue); newParameterValue.setUserId(ContextUtils.getUserId()); newParameterValue.setWidgetParameter(parameter); newParameterValue.setWebPageId(Long.parseLong(webpageId)); widgetParameterValueDao.save(newParameterValue); }else{//修改 WidgetParameterValue olderParameterValue = parameterValues.get(0); olderParameterValue.setValue(parameterValue); widgetParameterValueDao.save(olderParameterValue); } }else{//前台穿过来空值 if(parameterValues.size()>0){ WidgetParameterValue olderParameterValue = parameterValues.get(0); widgetParameterValueDao.delete(olderParameterValue); } } } } /** * 依次获取页面所有的窗体ID * @param webpage * @return */ public List<Long> getAllWidgetId(Webpage webpage){ Map<String, Widget> map = new HashMap<String, Widget>(); List<Long> widgetIds = new ArrayList<Long>(); List<Widget> widgetList = getWidgetsByBuyerAndAuthority(); List<Widget> widgets = webpage.getLeftWidgets(); for(Widget widget : widgets){ if(widgetList.contains(widget)){ widgetIds.add(widget.getId()); map.put("LEFT_"+widget.getId(), widget); } } widgets = webpage.getCenterWidgets(); for(Widget widget : widgets){ if(widgetList.contains(widget)){ widgetIds.add(widget.getId()); map.put("CENTER_"+widget.getId(), widget); } } widgets = webpage.getRightWidgets(); for(Widget widget : widgets){ if(widgetList.contains(widget)){ widgetIds.add(widget.getId()); map.put("RIGHT_"+widget.getId(), widget); } } String widgetPositions = webpage.getWidgetPosition(); if(!StringUtils.isEmpty(widgetPositions)){ String[] columns=widgetPositions.split("\\|"); for(int i=0;i<columns.length;i++){ String[] widgetsArray = columns[i].split("="); if(widgetsArray.length==2){ String place=widgetsArray[0]; if(place.equals("col1")){ String[] widgetId=widgetsArray[1].split(","); webpage.setLeftWidgets(new ArrayList<Widget>()); for(String w:widgetId){ webpage.getLeftWidgets().add(map.get("LEFT_"+w.split("-")[1])); } }else if(place.equals("col2")){ String[] widgetId=widgetsArray[1].split(","); webpage.setRightWidgets(new ArrayList<Widget>()); for(String w:widgetId){ webpage.getRightWidgets().add(map.get("RIGHT_"+w.split("-")[1])); } }else if(place.equals("col3")){ String[] widgetId=widgetsArray[1].split(","); webpage.setCenterWidgets(new ArrayList<Widget>()); for(String w:widgetId){ webpage.getCenterWidgets().add(map.get("CENTER_"+w.split("-")[1])); } } } } } return widgetIds; } public void addWidgets(Webpage page, String widgetIds, int position){ String[] ids = widgetIds.split(","); WidgetConfig config = null; for(int i = 0;i < ids.length; i++){ config=widgetConfigDao.getWidgetConfig(page.getId(), Long.valueOf(ids[i])); if(config==null)config = new WidgetConfig(); config.setPosition(position); config.setCompanyId(ContextUtils.getCompanyId()); config.setUserId(ContextUtils.getUserId()); config.setWidgetId(Long.valueOf(ids[i])); config.setWebpageId(page.getId()); config.setVisible(true); widgetConfigDao.save(config); } webPageDao.save(page); } /** * 删除小窗体 * @param webpageId * @param widgetId */ public void deleteWidget(Webpage page,Long widgetId){ WidgetConfig config = widgetConfigDao.getWidgetConfig(page.getId(), widgetId); if(config != null){ config.setVisible(false); widgetConfigDao.save(config); } webPageDao.save(page); } /** * 获取小窗体html * @param widgetId * @return */ public String getWidgetHtml(String widgetIdStrs, Long webpageId,Integer pageNo) throws Exception{ StringBuilder result = new StringBuilder(); result = getWidgetsHtml(widgetIdStrs, webpageId, pageNo); return result.toString(); } public StringBuilder getWidgetsHtml(String widgetIds,Long webpageId,Integer pageNo) throws Exception{ StringBuilder result = new StringBuilder(); try { String[] widgetIdArr = widgetIds.split(","); for(String widgetId:widgetIdArr){ if(StringUtils.isNotEmpty(widgetId)){ result.append("{").append(widgetId).append(":"); String widgetHtml =getWidgetHtml(Long.parseLong(widgetId),webpageId,pageNo); if(!"error".equals(widgetHtml)){//如果出现异常了,则不再拼接 Widget widget = getWdigetById(Long.parseLong(widgetId)); if(widget.getPageVisible()!=null && widget.getPageVisible()){ HashMap<String, Object> dataModel=new HashMap<String, Object>(); dataModel.put("pageNo", pageNo); dataModel.put("totalNo", Integer.parseInt(widgetHtml.split("totalNo")[1])); dataModel.put("id", widgetId); widgetHtml=widgetHtml.split("totalNo")[0]+TagUtil.getContent(dataModel, "show-pagination.ftl"); }else{ widgetHtml=widgetHtml.split("totalNo")[0]; } } result.append(widgetHtml).append("}@#$%"); } } }catch (Exception e) { e.printStackTrace(); }finally{ } return result; } /** * 获取小窗体html * @param widgetId * @return */ public String getWidgetHtml(Long widgetId, Long webpageId,Integer pageNo) throws Exception{ Widget widget = getWdigetById(widgetId); List<String> parameterNames = new ArrayList<String>(); List<String> parameterValues = new ArrayList<String>(); List<WidgetParameter> parameters = widgetParameterDao.getWidgetParameters(widgetId); for(WidgetParameter wp:parameters){ List<WidgetParameterValue> widgetParameterValues = widgetParameterValueDao.getWidgetParameterValuesByUserId(wp.getId(), webpageId); if(!widgetParameterValues.isEmpty()){//设置小窗体参数设置值 parameterNames.add(wp.getName()); parameterValues.add(getWidgetParameterValues(widgetParameterValues)); }else{//设置小窗体参数默认值 if(wp.getControlType().equals(ControlType.PT_TEXT)){//文本类型 if(!wp.getDefaultValue().isEmpty()){ parameterNames.add(wp.getName()); parameterValues.add(wp.getDefaultValue()); } }else{//其他类型 if(wp.getOptionGroupId()!=null&&!wp.getOptionGroupId().equals(0l)){ parameterNames.add(wp.getName()); parameterValues.add(ApiFactory.getSettingService().getOptionGroupDefaultValue(wp.getOptionGroupId())); } } } } parameterNames.add(StaticVariable.USER_ID); parameterNames.add(StaticVariable.LOGIN_NAME); parameterNames.add(StaticVariable.COMPANY_ID); parameterNames.add(StaticVariable.PAGE_NO); parameterValues.add(ContextUtils.getUserId().toString()); parameterValues.add(ContextUtils.getLoginName()); parameterValues.add(ContextUtils.getCompanyId().toString()); parameterValues.add(pageNo.toString()); return getHttpClientConnection(widget.getSystemCode(),widget.getUrl(),parameterNames,parameterValues); } /** * 根据名称获取小窗体 * @return * @throws Exception */ public Widget getWidgetByName(String widgetName) throws Exception{ Widget widget = widgetDao.getWidgetByNames(widgetName); return widget; } private String getWidgetParameterValues(List<WidgetParameterValue> widgetParameterValues){ StringBuilder sb = new StringBuilder(); for(int i=0;i<widgetParameterValues.size();i++){ if(i>0){ sb.append(StaticVariable.SYMBOL_SUBTRACTION); } sb.append(widgetParameterValues.get(i).getValue()); } return sb.toString(); } /** * httpClient连接方式,获取数据 * @param productCode * @param url * @param methodName * @param parameterNames * @param parameterValues * @return * @throws Exception */ private String getHttpClientConnection(String productCode,String url, List<String> paramNames,List<String> paramValues){ StringBuilder sb = new StringBuilder(url); if(paramNames!=null) for(int i=0;i<paramNames.size();i++){ if(i == 0) sb.append("?"); else sb.append(StaticVariable.SYMBOL_AND); sb.append(paramNames.get(i)); sb.append(StaticVariable.SYMBOL_EQUAL); sb.append(paramValues.get(i)); } try { String productUrl = sb.toString(); if(!url.startsWith("http")){ productUrl = getSystemUrl(productCode); productUrl=productUrl+sb.toString(); } return getHttpClientConnection(productUrl); } catch (Exception e) { return "error"; } } /** * 获取通知的HTML * @return * @throws Exception */ public String getActiveNoticeHtml() throws Exception{ String url = getProperty(StaticVariable.NOTICE_WEBSERVICE_URL); List<String> paramNames = new ArrayList<String>(); List<String> paramValues = new ArrayList<String>(); paramNames.add(StaticVariable.USER_ID); paramNames.add(StaticVariable.LOGIN_NAME); paramNames.add(StaticVariable.COMPANY_ID); paramValues.add(ContextUtils.getUserId().toString()); paramValues.add(ContextUtils.getLoginName()); paramValues.add(ContextUtils.getCompanyId().toString()); return getHttpClientConnection( StaticVariable.OA_PRODUCT_CODE,url,paramNames,paramValues); } private String getProperty(String key) throws Exception{ Properties property = new Properties(); property.load(IndexManager.class.getClassLoader() .getResourceAsStream(StaticVariable.APPLICATION_PROPERTIES)); return property.getProperty(key); } /** * 保存主题 * @param name */ public void saveTheme(String name){ UserTheme theme = userThemeDao.getTheme(); if(theme==null){ theme = new UserTheme(); theme.setUserId(ContextUtils.getUserId()); } theme.setThemeCode(name); userThemeDao.save(theme); } /** * 获取某用户设置的主题 * @return */ public String getThemeByUser(Long userId, Long companyId){ UserTheme theme = userThemeDao.getTheme(userId, companyId); if(theme==null){ return ""; }else{ return theme.getThemeCode(); } } private String getSystemUrl(String key) throws Exception{ String url = ""; if(StringUtils.isNotEmpty(key)){ url=SystemUrls.getSystemUrl(key); url += StaticVariable.SYMBOL_SLASH; }else{ url="/"; } return url; } /** * 得到小窗体位置 * @return */ public String getWidgetPosition(String wpId){ Webpage webpage=webPageDao.get(Long.parseLong(wpId)); if(webpage!=null){ return webpage.getWidgetPosition(); } return null; } /** * 获得当前的信息数 * @return * @throws Exception */ public String getCurrentTotalNoteNum(Long userId) throws Exception { return getHttpClientConnection("http://localhost:8080/octopus/student/small-note!getMessageCount.html?currentUserId="+userId); } /** * 重载getHttpClientConnection方法 * @param url * @return * @throws Exception */ private String getHttpClientConnection(String url) throws Exception{ HttpGet httpget = new HttpGet(url); HttpClient httpclient = new DefaultHttpClient(); ResponseHandler<String> responseHandler = new BasicResponseHandler(); String responseBody = httpclient.execute(httpget, responseHandler); httpclient.getConnectionManager().shutdown(); return responseBody;//接收html } //根据购买的系统、用户权限显示小窗体 public List<Widget> getWidgetsByBuyerAndAuthority(){ List<BusinessSystem> businessSystemList = acsApiManager.getAllBusiness(ContextUtils.getCompanyId()); List<Widget> widgetList = new ArrayList<Widget>(); for(BusinessSystem businessSystem : businessSystemList){ widgetList.addAll(widgetDao.getWidgetsBySystemCode(businessSystem.getCode())); } Set<Role> roleSet = ApiFactory.getAcsService().getRolesByUser(ContextUtils.getUserId()); List<WidgetRole> widgetByRoleList = new ArrayList<WidgetRole>(); for(Role role : roleSet ){ widgetByRoleList.addAll(widgetRoleDao.getWidgetsByRoleId(role.getId())); } List<Widget> result = new ArrayList<Widget>(); for(WidgetRole widgetRole : widgetByRoleList){ if(widgetList.contains(widgetDao.get(widgetRole.getWidgetId()))&&!result.contains(widgetDao.get(widgetRole.getWidgetId()))){ result.add(widgetDao.get(widgetRole.getWidgetId())); } } java.util.Collections.sort(result); return result; } /** * 根据系统id获得当前公司中所有的小窗体 * @param businessId * @return */ public void getWidgetsBySystemCode(Page<Widget> widgetPage,String systemCode){ widgetDao.getWidgetsBySystemCode(widgetPage,systemCode); } public void saveWidget(Widget widget,String roleIds){ //保存Widget widgetDao.save(widget); List<WidgetParameter> parameters=new ArrayList<WidgetParameter>(); //保存窗体参数 List<Object> objects=JsonParser.getFormTableDatas(WidgetParameter.class); for(Object obj:objects){ WidgetParameter parameter=(WidgetParameter)obj; if(StringUtils.isNotEmpty(parameter.getName())){ parameter.setWidget(widget); parameter.setCompanyId(ContextUtils.getCompanyId()); widgetParameterDao.save(parameter); parameters.add(parameter); } } if(parameters.size()>0){ widget.setParameters(parameters); } //删除原有角色小窗体关系 widgetRoleDao.deleteWidgetRoleByWidgetId(widget.getId()); //保存WidgetRole if(StringUtils.isNotEmpty(roleIds)){ String[] ids=roleIds.split(","); for(String id:ids){ //创建小窗体角色关系 WidgetRole wr=new WidgetRole(); wr.setCompanyId(ContextUtils.getCompanyId()); wr.setRoleId(Long.parseLong(id)); wr.setWidgetId(widget.getId()); widgetRoleDao.save(wr); } } } public void deleteWidget(String widgetIds){ if(StringUtils.isNotEmpty(widgetIds)){ String[] ids=widgetIds.split(","); for(String id:ids){ widgetDao.delete(Long.parseLong(id)); List<WidgetConfig> configs=widgetConfigDao.getWidgetConfigsByWidgetId(Long.parseLong(id)); if(configs!=null){ for(WidgetConfig config:configs){ widgetConfigDao.delete(config); } } List<WidgetRole> wrs= widgetRoleDao.getWidgetRoleByWidgetId(Long.parseLong(id)); if(wrs!=null){ for(WidgetRole wr:wrs){ widgetRoleDao.delete(wr); } } } } } public String validateDeleteWidget(String widgetIds){ StringBuilder sb=new StringBuilder(); if(StringUtils.isNotEmpty(widgetIds)){ String[] ids=widgetIds.split(","); for(String id:ids){ Widget widget=getWdigetById(Long.parseLong(id)); List<WidgetConfig> configs=widgetConfigDao.getVisibleWidgetConfigsByWidgetId(Long.parseLong(id)); if(configs!=null&&configs.size()>0){ sb.append("\"").append(widget.getCode()).append("\"").append(","); }else{ List<WidgetRole> wrs= widgetRoleDao.getWidgetRoleByWidgetId(Long.parseLong(id)); if(wrs!=null&&wrs.size()>0)sb.append("\"").append(widget.getCode()).append("\"").append(","); } } } if(StringUtils.isNotEmpty(sb.toString())){ if(sb.charAt(sb.length()-1)==',')sb.deleteCharAt(sb.length()-1); } return sb.toString(); } public List<WidgetRole> getWidgetRoleByWidgetId(Long widgetId){ return widgetRoleDao.getWidgetRoleByWidgetId(widgetId); } /** * 根据CODE获取小窗体 * @param code * @return */ public Widget getWidgetByCode(String code){ Widget widget = widgetDao.getWidgetByCode(code); return widget; } /** * 验证小窗体是否存在 * @param code * @return 存在返回true,反之 */ public boolean isWidgetExist(String code,Long widgetId){ Widget wg=widgetDao.getWidgetByCode(code); if(wg==null){ return false; }else{ if(widgetId==null)return true; if(wg.getId().equals(widgetId)){ return false; }else{ return true; } } } /** * 删除窗口参数 * @param parameterId */ public void deleteParameter(Long parameterId){ widgetParameterDao.delete(parameterId); } //初始化备选值 public void initializeWidgetParameter( List<WidgetParameter> widgetParameterList) { for(WidgetParameter widgetParameter:widgetParameterList){ if(widgetParameter.getControlType().equals(ControlType.PT_SELECT)){ if(widgetParameter.getOptionGroupId()!=null){ widgetParameter.setOptions(optionGroupManager.getOptionsByGroup(widgetParameter.getOptionGroupId())); } } } } /** * 获得所有主题 * @param themePage */ public void getThemePage(Page<Theme> themePage) { themeDao.themePage(themePage); } /** * 保存主题 * @param theme */ public void saveTheme(Theme theme) { themeDao.save(theme); } /** * 删除主题 * @param valueOf */ public void deleteTheme(Long id) { themeDao.delete(id); } /** * 根据id获得主题 * @param id * @return */ public Theme getTheme(Long id) { return themeDao.get(id); } /** * 获得启用的主题 * @return */ public List<Theme> getStartUsingTheme() { return themeDao.getStartUsingTheme(); } /** * 改变主题的状态 * @param ids * @return */ public String changeThemeState(String ids) { int draftToEn=0,enToDis=0,disToEn=0; StringBuilder sbu=new StringBuilder(""); for(String id:ids.split(",")){ Theme theme = themeDao.get(Long.valueOf(id)); if (theme.getDataState().equals(DataState.DRAFT)) {// 草稿->启用 theme.setDataState(DataState.ENABLE); draftToEn++; } else if (theme.getDataState().equals(DataState.ENABLE)) {// 启用->禁用 theme.setDataState(DataState.DISABLE); enToDis++; } else if (theme.getDataState().equals(DataState.DISABLE)) {// 禁用->启用 theme.setDataState(DataState.ENABLE); disToEn++; } themeDao.save(theme); } sbu.append(draftToEn).append("个草稿->启用,") .append(enToDis).append("个启用->禁用,") .append(disToEn).append("个禁用->启用"); return sbu.toString(); } //刷新小窗体位置,在移动小窗体后用到 (liudongxia) public void refreshWidgetPosition(Long webpageId){ //widget-place-left=identifierwidget-3,identifierwidget-5|widget-place-center=identifierwidget-1|widget-place-right=identifierwidget-4,identifierwidget-2 List<List<Long>> lists=getWidgetIds(webpageId); List<Long> leftIds=lists.get(0); List<Long> centerIds=lists.get(1); List<Long> rightIds=lists.get(2); List<WidgetConfig> widgetConfigs = widgetConfigDao.getWidgetConfigs(webpageId); for(WidgetConfig config:widgetConfigs){ Widget widget = widgetDao.get(config.getWidgetId()); if(leftIds.contains(widget.getId())){ config.setPosition(StaticVariable.POSITION_LEFT); widgetConfigDao.save(config); continue; } if(centerIds.contains(widget.getId())){ config.setPosition(StaticVariable.POSITION_CENTER); widgetConfigDao.save(config); continue; } if(rightIds.contains(widget.getId())){ config.setPosition(StaticVariable.POSITION_RIGHT); widgetConfigDao.save(config); continue; } } } private List<List<Long>> getWidgetIds(Long webpageId){ List<List<Long>> lists=new ArrayList<List<Long>>(); //widget-place-left=identifierwidget-3,identifierwidget-5|widget-place-center=identifierwidget-1|widget-place-right=identifierwidget-4,identifierwidget-2 Webpage page = webPageDao.get(webpageId); List<Long> leftIds=new ArrayList<Long>(); List<Long> centerIds=new ArrayList<Long>(); List<Long> rightIds=new ArrayList<Long>(); String widgetPostion=page.getWidgetPosition(); if(StringUtils.isNotEmpty(widgetPostion)){ String postion = page.getWidgetPosition(); String[] postionArr = postion.split("\\|"); String leftPositon=postionArr[0]; String centerPositon=""; String rightPositon=""; centerPositon=postionArr[1]; rightPositon=postionArr[2]; //获得左侧小窗体id if(leftPositon.split("=").length>1){ leftPositon=leftPositon.split("=")[1]; }else{ leftPositon=""; } String[] leftWidgetIds=leftPositon.split(","); //获得中间小窗体id if(centerPositon.split("=").length>1){ centerPositon=centerPositon.split("=")[1]; }else{ centerPositon=""; } String[] centerWidgetIds=centerPositon.split(","); if(rightPositon.split("=").length>1){ rightPositon=rightPositon.split("=")[1]; }else{ rightPositon=""; } String[] rightWidgetIds=rightPositon.split(","); //获得右侧小窗体id for (String widgetId : leftWidgetIds) { if(widgetId.split("-").length>1)leftIds.add(Long.parseLong(widgetId.split("-")[1])); } for (String widgetId : centerWidgetIds) { if(widgetId.split("-").length>1)centerIds.add(Long.parseLong(widgetId.split("-")[1])); } for (String widgetId : rightWidgetIds) { if(widgetId.split("-").length>1)rightIds.add(Long.parseLong(widgetId.split("-")[1])); } } lists.add(leftIds); lists.add(centerIds); lists.add(rightIds); return lists; } /** * 导出主题 */ public void backup(String systemIds, Long companyId,FileConfigModel fileConfig) { try { if(StringUtils.isNotEmpty(fileConfig.getFilename())){ File file = new File(fileConfig.getExportRootPath()+"/"+fileConfig.getExportPath()+"/"+fileConfig.getFilename()+".xls"); OutputStream out=null; out=new FileOutputStream(file); exportTheme(out); } }catch (Exception e) { log.debug(PropUtils.getExceptionInfo(e)); } } private void exportTheme(OutputStream fileOut){ HSSFWorkbook wb; List<DataSheetConfig> confs=dataHandle.getConfigInfo("data-sheets/sheets/data-sheet[@name='PORTAL_THEME']"); wb = new HSSFWorkbook(); HSSFSheet sheet=wb.createSheet("PORTAL_THEME"); //获得导出的根节点 String[] rootPaths=dataHandle.getRootPath(); String exportRootPath=rootPaths[0]; //创建导出文件夹,导出的流程定义文件暂存的位置 File folder = new File(exportRootPath+"/portalTheme"); if(!folder.exists()){ folder.mkdirs(); } HSSFRow row = sheet.createRow(0); dataHandle.getFileHead(wb,row,confs); List<Theme> themes=themeDao.getAllTheme(); for(Theme theme:themes){ themeInfo(theme,sheet,confs,exportRootPath); } try { wb.write(fileOut); } catch (IOException e) { log.debug(PropUtils.getExceptionInfo(e)); }finally{ if(fileOut!=null) try { fileOut.close(); } catch (IOException e) { log.debug(PropUtils.getExceptionInfo(e)); } } } private void themeInfo(Theme theme,HSSFSheet sheet,List<DataSheetConfig> confs,String exportRootPath){ if(theme!=null){ HSSFRow rowi = sheet.createRow(sheet.getLastRowNum()+1); for(int i=0;i<confs.size();i++){ DataSheetConfig conf=confs.get(i); if(!conf.isIgnore()){ dataHandle.setFieldValue(conf,i,rowi,theme); } } } } public void restore(Long companyId, FileConfigModel fileConfig,String... imatrixInfo) { File file =null; if(StringUtils.isNotEmpty(fileConfig.getFilename())){ file=new File(fileConfig.getImportRootPath()+"/"+fileConfig.getImportPath()+"/"+fileConfig.getFilename()+".xls"); if(file.exists()){ importTheme(file, companyId); } } } private void importTheme(File file,Long companyId){ List<DataSheetConfig> confs=dataHandle.getConfigInfo("data-sheets/sheets/data-sheet[@name='PORTAL_THEME']"); Map<String,Integer> map=dataHandle.getIdentifier(confs); //创建时间,创建人姓名,创建人id,公司id FileInputStream fis=null; InputStreamReader fr=null; BufferedReader br=null; try{ fis=new FileInputStream(file); HSSFWorkbook wb=new HSSFWorkbook(fis); HSSFSheet sheet=wb.getSheet("PORTAL_THEME"); if(ContextUtils.getCompanyId()==null){ if(companyId==null){ List<Company> companys=companyManager.getCompanys(); for(Company company:companys){ ThreadParameters parameters=new ThreadParameters(company.getCompanyId(),null); ParameterUtils.setParameters(parameters); importThemeData(sheet,confs,map); } }else{ ThreadParameters parameters=new ThreadParameters(companyId,null); ParameterUtils.setParameters(parameters); importThemeData(sheet,confs,map); } dataHandle.clearCompanyId(); }else{ importThemeData(sheet,confs,map); } } catch (FileNotFoundException e) { log.debug(PropUtils.getExceptionInfo(e)); }catch (IOException e){ log.debug(PropUtils.getExceptionInfo(e)); }finally{ try{ if(br!=null)br.close(); if(fr!=null)fr.close(); if(fis!=null)fis.close(); }catch(IOException ep){ log.debug(PropUtils.getExceptionInfo(ep)); } } } private void importThemeData(HSSFSheet sheet,List<DataSheetConfig> confs,Map<String,Integer> map){ int firstRowNum = sheet.getFirstRowNum(); int rowNum=sheet.getLastRowNum(); for(int i=firstRowNum+1;i<=rowNum;i++){ HSSFRow row =sheet.getRow(i); if(sheet.getRow(i)!=null){ addTheme(confs,row,map); } } } private void addTheme(List<DataSheetConfig> confs,HSSFRow row,Map<String,Integer> map ){ Integer index=map.get("code"); String code=row.getCell(index).getStringCellValue();//导入定义编号 Theme theme=themeDao.getTheme(code); if(theme==null){ theme=new Theme(); } theme.setCode(code); for(int j=0;j<confs.size();j++){ DataSheetConfig conf=confs.get(j); if(!conf.isIgnore()){ String fieldName=conf.getFieldName(); String value=null; if(row.getCell(j)!=null){ value=row.getCell(j).getStringCellValue(); } if(StringUtils.isNotEmpty(value)){//导入数据 dataHandle.setValue(theme,fieldName,conf.getDataType(),value,conf.getEnumName()); }else if(StringUtils.isNotEmpty(conf.getDefaultValue())){//导入默认值 dataHandle.setValue(theme,fieldName,conf.getDataType(),conf.getDefaultValue(),conf.getEnumName()); } } } theme.setCreatedTime(new Date()); theme.setCreator(ContextUtils.getLoginName()); theme.setCreatorName(ContextUtils.getUserName()); theme.setCompanyId(ContextUtils.getCompanyId()); themeDao.save(theme); } }