package com.norteksoft.portal.web.portlet; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; 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.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Required; import com.norteksoft.acs.base.web.struts2.Struts2Utils; import com.norteksoft.acs.entity.organization.User; import com.norteksoft.acs.service.AcsUtils; import com.norteksoft.mms.module.entity.Menu; import com.norteksoft.portal.entity.BaseSetting; import com.norteksoft.portal.entity.Countdown; import com.norteksoft.portal.entity.Message; import com.norteksoft.portal.entity.StickyNote; import com.norteksoft.portal.entity.Widget; import com.norteksoft.portal.service.BaseSettingManager; import com.norteksoft.portal.service.MessageInfoManager; import com.norteksoft.portal.service.PublicManager; import com.norteksoft.product.api.ApiFactory; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.ContextUtils; import com.norteksoft.product.util.JsonParser; import com.norteksoft.product.util.MemCachedUtils; 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.web.struts2.CrudActionSupport; @Namespace("/public") @ParentPackage("default") @Results( { @Result(name = CrudActionSupport.RELOAD, location = "public?webpageId=${webpageId}", type = "redirectAction")}) public class publicAction extends CrudActionSupport<Widget> { private static final long serialVersionUID = 1L; private Page<User> page = new Page<User>(20, true); private PublicManager publicManager; private Widget widget; private String userName; private String userDepart; private String userSex; private String noteValue; private Date countdownDate; private String countdownName; private String countdownTime; private Long widgetId; //小窗口ID private String skipWindwo; private Long companyId; private String username;//swing登录名 private String auto;//swing是否自动登录 private String password;//swing密码,md5加密后的 @Autowired private AcsUtils acsUtils; @Autowired private MessageInfoManager messageManager; @Autowired private BaseSettingManager baseSettingManager; @Required public void setPublicManager(PublicManager publicManager) { this.publicManager = publicManager; } public Widget getModel() { return widget; } @Override public String list() throws Exception { return null; } @Override protected void prepareModel() throws Exception { } @Override public String save() throws Exception { return null; } @Override public String input() throws Exception { return null; } @Override public String delete() throws Exception { return null; } /** * 生日提醒 */ public String getBirthdayAwoke(){ String birthdaysAwoke= publicManager.getBirthdayNotice(widgetId); renderText(birthdaysAwoke); return null; } /** * 获取员工查询结果 * @return * @throws Exception */ public String getQueryResult()throws Exception{ publicManager.getQueryResult(userName,userDepart,userSex,page); return "queryResult"; } /** * 便签 * @return * @throws Exception */ public String getStickyNoteVal() throws Exception{ if(publicManager.getStickyNoteById()!=null && publicManager.getStickyNoteById().getContent() != null){ noteValue = publicManager.getStickyNoteById().getContent().length()<1?"":publicManager.getStickyNoteById().getContent(); }else{ noteValue = ""; } return "note"; } /** * 保存便签 * @return * @throws Exception */ public String saveStickyNote()throws Exception{ StickyNote stickyNote; if(publicManager.getStickyNoteById()!=null){ stickyNote = publicManager.getStickyNoteById(); stickyNote.setContent(noteValue); }else{ stickyNote = new StickyNote(); stickyNote.setCompanyId(ContextUtils.getCompanyId()); stickyNote.setUserId(ContextUtils.getUserId()); stickyNote.setContent(noteValue); } publicManager.saveStickyNote(stickyNote); ApiFactory.getBussinessLogService().log("portal管理", "保存便签", ContextUtils.getSystemId("portal")); return null; } /** * Iframe跳转到倒计时牌 * @return * @throws Exception */ public String toCountDown() throws Exception{ countdownName = publicManager.getCountDown().getTitle(); Long amountSecond = publicManager.getRemainTime(); if(amountSecond<1){ countdownTime = "0"; }else{ countdownTime = amountSecond.toString(); } return "countDown"; } /** * 弹出创建倒计时牌 * @return * @throws Exception */ public String openCountDownWindow() throws Exception{ if(publicManager.getCountDown()!=null){ countdownDate = publicManager.getCountDown().getTargetDate(); countdownName = publicManager.getCountDown().getTitle(); } return "countDownWindow"; } /** * 保存倒计时牌 * @return * @throws Exception */ public String saveCountDown() throws Exception{ Countdown countDown; if(publicManager.getCountDown()!=null){ countDown = publicManager.getCountDown(); countDown.setTargetDate(countdownDate); countDown.setTitle(countdownName); }else{ countDown = new Countdown(); countDown.setTargetDate(countdownDate); countDown.setTitle(countdownName); countDown.setCompanyId(ContextUtils.getCompanyId()); countDown.setUserId(ContextUtils.getUserId()); skipWindwo="notCountDown"; } publicManager.saveCountDown(countDown); renderText("23"); return null; } /** * 取消倒计时牌设置 * @return * @throws Exception */ public String cancelCountDown(){ publicManager.cancelCountDown(); renderText("23"); return null; } @Action("public-auto") public String auto() throws Exception { String username=Struts2Utils.getRequest().getParameter("username"); User user=acsUtils.getUserByLoginName(username); Long companyId=user.getCompanyId(); StringBuilder bu= new StringBuilder(); String imatrixUrl=SystemUrls.getSystemUrl("imatrix"); // String imatrixUrl="http://192.168.1.97:8083/imatrix"; String url=imatrixUrl+"/portal/public/public-info.htm"; ThreadParameters parameters=new ThreadParameters(null,null); parameters.setCompanyId(companyId); parameters.setUserId(user.getId()); parameters.setLoginName(user.getLoginName()); parameters.setCompanyId(companyId); ParameterUtils.setParameters(parameters); List<com.norteksoft.product.api.entity.Menu> menus=ApiFactory.getMmsService().getTopMenus(); StringBuilder menuBl = new StringBuilder(); for (com.norteksoft.product.api.entity.Menu menu : menus) { String m=menu.getUrl(); if(!PropUtils.isBasicSystem(m)){ menuBl.append(m+","); } } bu.append("{ "); bu.append("\"username\":\""+username+"\","); bu.append("\"companyId\":\""+companyId+"\","); bu.append("\"refreshPeriod\":\""+getRrefeshPeriod(username, companyId)+"\","); bu.append("\"workRegister\":{").append(getWorkRegisterInfo(username, companyId)).append("},"); bu.append("\"rootPath\":\""+StringUtils.removeEnd(menuBl.toString(),",")+"\","); bu.append("\"cas\":\""+PropUtils.getProp("host.sso")+"\","); bu.append("\"urls\":[\""+url+"\"]"); bu.append(" }"); this.renderText(bu.toString()); return null; } private String getWorkRegisterInfo(String username, Long companyId){ ThreadParameters tp = new ThreadParameters(); tp.setCompanyId(companyId); ParameterUtils.setParameters(tp); // test // username="lianghedong"; // companyId=2L; // String oaUrl = "http://192.168.1.59/oa"; String oaUrl = SystemUrls.getSystemUrl("oa"); String regUrl = oaUrl+"/work/register-check-swing.htm"+"?username="+username+"&companyId="+companyId; StringBuilder sb = new StringBuilder(); try { String regInfo = getHttpClientConnection(regUrl); LOG.debug("=========== work register info =========="+regInfo); if(StringUtils.isNotEmpty(regInfo)){ Map<String, String> info = JsonParser.json2Map(String.class, String.class, regInfo); sb.append("\"rootUrl\":\"").append(oaUrl).append("\"").append(","); sb.append("\"start\":\"").append(info.get("predictStartHour")).append("\"").append(","); sb.append("\"end\":\"").append(info.get("predictEndHour")).append("\"").append(","); sb.append("\"onWork\":\"").append(info.get("amStartHour")).append("\"").append(","); sb.append("\"offWork\":\"").append(info.get("pmEndHour")).append("\""); } } catch (Exception e) { LOG.error("Swing get work register info error. url["+regUrl+"]", e); } return sb.toString().replaceAll("null", ""); } public String getHttpClientConnection(String url) throws Exception{ HttpGet httpget = new HttpGet(url); HttpClient httpclient = new DefaultHttpClient(); ResponseHandler<String> responseHandler = new BasicResponseHandler(); LOG.debug(" *** IP: [" + Struts2Utils.getRequest().getRemoteHost() + "] httpget URI : "+httpget.getURI()); String responseBody = httpclient.execute(httpget, responseHandler); httpclient.getConnectionManager().shutdown(); return responseBody;//接收html } private Integer getRrefeshPeriod(String username, Long companyId){ BaseSetting setting = baseSettingManager.getBaseSettingByLonginName(username, companyId); Integer refeshPeriod = 300; if(setting != null && setting.getRefreshTime() != null){ refeshPeriod = setting.getRefreshTime(); } return refeshPeriod; } /** * swing任务信息 * @return */ @Action("public-info") public String taskInfo(){ List<Message> messages=messageManager.getMessages(username,companyId,true);; if(messages!=null){ List<Message> mess=new ArrayList<Message>(); for (Message messages2 : messages) { String weapp=messages2.getUrl(); if(StringUtils.isNotEmpty(messages2.getSystemCode())){ Menu menu=(Menu) MemCachedUtils.get(messages2.getSystemCode()); if(menu!=null){ String url=menu.getUrl(); if(StringUtils.contains(weapp, "?")){ weapp=url+weapp+"&messageId="+messages2.getId();//先用用户名 }else{ weapp=url+weapp+"?messageId="+messages2.getId(); } } } messages2.setUrl(weapp); mess.add(messages2); } this.renderText(JsonParser.object2Json(mess,"yyyy-MM-dd HH:mm")); return null; } return null; } public Widget getWidget() { return widget; } public void setWidget(Widget widget) { this.widget = widget; } public Page<User> getPage() { return page; } public void setPage(Page<User> page) { this.page = page; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserDepart() { return userDepart; } public void setUserDepart(String userDepart) { this.userDepart = userDepart; } public String getUserSex() { return userSex; } public void setUserSex(String userSex) { this.userSex = userSex; } public PublicManager getPublicManager() { return publicManager; } public String getNoteValue() { return noteValue; } public void setNoteValue(String noteValue) { this.noteValue = noteValue; } public Date getCountdownDate() { return countdownDate; } public void setCountdownDate(Date countdownDate) { this.countdownDate = countdownDate; } public String getCountdownName() { return countdownName; } public void setCountdownName(String countdownName) { this.countdownName = countdownName; } public String getCountdownTime() { return countdownTime; } public void setCountdownTime(String countdownTime) { this.countdownTime = countdownTime; } public Long getWidgetId() { return widgetId; } public void setWidgetId(Long widgetId) { this.widgetId = widgetId; } public String getSkipWindwo() { return skipWindwo; } public void setSkipWindwo(String skipWindwo) { this.skipWindwo = skipWindwo; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getAuto() { return auto; } public void setAuto(String auto) { this.auto = auto; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Long getCompanyId() { return companyId; } public void setCompanyId(Long companyId) { this.companyId = companyId; } }