package com.cabletech.business.contactletter.action; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.apache.commons.fileupload.FileItem; import org.apache.commons.lang.StringUtils; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.cabletech.baseinfo.business.entity.UserInfo; import com.cabletech.business.base.service.CommonOrderCodeService; import com.cabletech.business.base.service.UserInfoService; import com.cabletech.business.contactletter.constant.Constant4Bcl; import com.cabletech.business.contactletter.model.BusinessContactLetter; import com.cabletech.business.contactletter.model.ContactLetterAudit; import com.cabletech.business.contactletter.service.BusinessContactLetterSendEEService; import com.cabletech.business.contactletter.service.BusinessContactLetterService; import com.cabletech.business.flowservice.util.ProMockPo; import com.cabletech.business.flowservice.util.WorkFlowServiceClient; import com.cabletech.business.workflow.common.model.CommonWorkflowResult; import com.cabletech.common.base.BaseAction; import com.cabletech.common.base.SysConstant; import com.cabletech.common.util.Page; /** * @author 周剛 * */ @Namespace("/contactletter") @Results({ @Result(name = "queryList", location = "/contactletter/query_list.jsp"), @Result(name = "input", location = "/contactletter/input.jsp"), @Result(name = "showcontactletter", location = "/contactletter/view.jsp"), @Result(name = "auditContactLetter", location = "/contactletter/audit.jsp"), @Result(name = "waitHandledlist", location = "/contactletter/waithandedlist.jsp") }) @Action("/contactletter") public class ContactLetterAction extends BaseAction<BusinessContactLetter, String> { private static final long serialVersionUID = 1L; // 流程处理历史key public static final String PROCESS_HISTORY_MAP = "PROCESS_HISTORY_MAP"; /** * 待审核列表路径 */ private static final String WAIT_HANDLED_PAGE_URL = "/contactletter/contactletter!waithandledlist.action?parameter.isQuery=1&businessType="; private BusinessContactLetter entity = new BusinessContactLetter(); private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * 业务类 */ @Resource(name = "businessContactLetterServiceImpl") private BusinessContactLetterService businessContactletterservice; /** * 分发业务类 */ @Resource(name = "businessContactLetterSendEEServiceImpl") private BusinessContactLetterSendEEService businessContactlettersendeeservice; /** * 用户信息类 */ @Resource(name = "userInfoServiceImpl") private UserInfoService userinfoService; /** * 审核类 */ private ContactLetterAudit contactLetterAudit = new ContactLetterAudit(); /** * 为了获取公文编号引用汪杰的业务类 */ @Resource(name = "commonOrderCodeServiceImpl") private CommonOrderCodeService commonOrderCodeService; /** * 引导入 查询页面 * * @return */ public String query() { return "queryList"; } /** * 审核过程 */ public String audit() { UserInfo userInfo = super.getUser(); logger.info(contactLetterAudit); businessContactletterservice.auditThis(entity, contactLetterAudit, userInfo); super.addMessage("提示:审核成功!", WAIT_HANDLED_PAGE_URL, SysConstant.SUCCESS); return SUCCESS; } /** * 引导进入待审核页面 * * @return */ public String waithandledlist() { return "waitHandledlist"; } /** * 转向审核页面 * * @return auditContactLetter */ public String toCheck() { String id = super.getRequest().getParameter("id"); String taskid = super.getRequest().getParameter("taskId"); if (id != null) { entity = businessContactletterservice.loadBusinessContactletter(id); } if (entity != null) { StringBuffer sb = new StringBuffer(); UserInfo userinfo = userinfoService.getUserInfoByPersonId(entity .getReleaseUserId()); entity.setReleaseUserName(userinfo.getUserName()); entity.setReleaseUserDept(userinfo.getDeptName()); String[] str = entity.getIssuerAreaUserIds().split(","); if (str != null && str.length > 0) { for (int i = 0; i < str.length; i++) { sb.append(userinfoService.getUserInfoByPersonId(str[i]) .getUserName() + ";"); } } entity.setIssuerAreaUserNames(sb.toString()); } StringBuffer readNameStr = getReadNameStr4Audit(entity); if (readNameStr != null) { entity.setIssuerAreaUserNames(readNameStr.toString()); } if (StringUtils.isNotBlank(entity.getDocumentType())) { if (entity.getDocumentType().equals("1")) { entity.setDocumentType("通告"); } else { entity.setDocumentType("通知"); } } contactLetterAudit.setTaskId(taskid); Map<String, List<CommonWorkflowResult>> checkresultMap = businessContactletterservice .getProcessHistoryList(id);// 获取任务id super.getRequest().setAttribute(PROCESS_HISTORY_MAP, checkresultMap); this.getRequest() .setAttribute("contactLetterAudit", contactLetterAudit); this.getRequest().setAttribute("entity", entity); return "auditContactLetter"; } /** * 获取用户已读信息 * * @param entity * 实体 * @return */ public String getReadNameStr(BusinessContactLetter entity) throws Exception { StringBuffer str = new StringBuffer(); if (StringUtils.isNotBlank(entity.getIssuerAreaUserIds())) { String[] ids = entity.getIssuerAreaUserIds().split(","); if (ids != null && ids.length > 0) { for (int i = 0; i < ids.length; i++) { String isread = businessContactlettersendeeservice .checkReadById(entity.getId(), ids[i]); String issuserNames = userinfoService .getUserInfoByPersonId(ids[i]).getUserName(); if (StringUtils.isNotBlank(isread)) { if (isread.equals("1")) { str.append(issuserNames) .append("[<font color=\"red\">已读</font>]") .append(";"); if ((i + 1) % 6 == 0) { str.append("</br>"); } } else { str.append(issuserNames) .append("[<font color=\"green\">未读</font>]") .append(";"); if ((i + 1) % 6 == 0) { str.append("</br>"); } } } } } } return str.toString(); } /** * 获取用户已读信息 * * @param entity * 实体 * @return */ public StringBuffer getReadNameStr4Audit(BusinessContactLetter entity) { String issuerUserIds = entity.getIssuerAreaUserIds(); String issuserNames = ""; StringBuffer str = new StringBuffer(); str.append("姓名:"); if (StringUtils.isNotBlank(issuerUserIds)) { String[] ids = issuerUserIds.split(","); if (ids != null && ids.length > 0) { for (int i = 0; i < ids.length; i++) { issuserNames = userinfoService .getUserInfoByPersonId(ids[i]).getUserName(); str.append(issuserNames).append(";"); } } } logger.info(str); return str; } /** * 查询列表页面 * * @throws ParseException */ public void listdate4query() throws ParseException { @SuppressWarnings("rawtypes") Page page = super.initPage(); UserInfo user = this.getUser(); page = businessContactletterservice.queryPage4Query(entity, page, user); this.getRequest().setAttribute("user", user); setExcelParameter(page); convertObjToJson(page); } /** * 待审核列表页面 */ public void listdate4handList() { @SuppressWarnings("rawtypes") Page page = super.initPage(); UserInfo user = super.getUser(); page = businessContactletterservice.queryPage4WaitHand(entity, page, user); convertObjToJson(page); } /** * 删除 * * @return */ public String delete() { String id = super.getRequest().getParameter("id"); businessContactletterservice.deleteBusinessContactletter(id);// 逻辑删 // 将status=9 super.addMessage("删除信息成功!", "/contactletter/contactletter!query.action", SysConstant.SUCCESS); return "queryList"; } /** * 查看详细信息。 * * @param mapping * @param form * @param request * @param response * @return * @throws Exception */ @Override public String view() throws Exception { String id = super.getRequest().getParameter("id"); UserInfo user = super.getUser(); Boolean flag = false; entity = businessContactletterservice.loadBusinessContactletter(id); if (entity.getStatus().equals(Constant4Bcl.CHECKOFF)) { flag = true; } if (flag) { entity = businessContactletterservice.readContactletter(id, user.getPersonId()); } if (StringUtils.isNotBlank(entity.getAuditUserId())) { entity.setAuditUserName(userinfoService.getUserInfoByPersonId( entity.getAuditUserId()).getUserName()); } if (StringUtils.isNotBlank(entity.getReleaseUserId())) { entity.setReleaseUserName(userinfoService.getUserInfoByPersonId( entity.getReleaseUserId()).getUserName()); } String str = getReadNameStr(entity); if (StringUtils.isNotBlank(str.toString())) { entity.setIssuerAreaUserNames(str.toString()); } if (StringUtils.isNotBlank(entity.getDocumentType())) { if (entity.getDocumentType().equals("1")) { entity.setDocumentType("通告"); } else { entity.setDocumentType("通知"); } } Date now = new Date(); String timeOutstr = "未过期"; if (entity.getExpirationTime() != null) { if (entity.getExpirationTime().before(now)) { timeOutstr = "<font color='red'>已过期</font>"; } } Map<String, List<CommonWorkflowResult>> checkresultMap = businessContactletterservice .getProcessHistoryList(id); super.getRequest().setAttribute(PROCESS_HISTORY_MAP, checkresultMap); super.getRequest().setAttribute("timeOutstr", timeOutstr); super.getRequest().setAttribute("entity", entity); return "showcontactletter"; } /* * 转到添加页 */ @Override public String input() { UserInfo userInfo = super.getUser(); String id = super.getRequest().getParameter("id"); if (StringUtils.isNotBlank(id)) { entity = businessContactletterservice.loadBusinessContactletter(id); } entity.setReleaseUserName(userInfo.getUserName()); entity.setReleaseUserDept(userInfo.getOrgName()); entity.setReleaseUserId(userInfo.getPersonId()); setSomething(entity); entity.setAuditUserId(entity.getAuditUserId()); super.getRequest().setAttribute("entity", entity); super.getRequest().setAttribute("user", this.getUser()); return INPUT; } /** * 设置一些值 * * @param entity */ public void setSomething(BusinessContactLetter entity) { UserInfo userInfo = super.getUser(); String documentNumber = commonOrderCodeService .generatorLetterCode(userInfo.getRegionId()); if (entity.getId() == null) { entity.setDocumentNumber(""); } else { StringBuffer issuerUserNames = new StringBuffer(); String name = ""; entity.setDocumentNumber(documentNumber); if (StringUtils.isNotBlank(entity.getAuditUserId())) { entity.setAuditUserName(userinfoService.getUserInfoByPersonId( entity.getAuditUserId()).getUserName()); } if (StringUtils.isNotBlank(entity.getIssuerAreaUserIds())) { String[] ids = entity.getIssuerAreaUserIds().split(","); for (int i = 0; i < ids.length; i++) { if (userinfoService.getUserInfoByPersonId(ids[i]) != null) { name = userinfoService.getUserInfoByPersonId(ids[i]) .getUserName(); } if (name != null) { issuerUserNames.append(name).append(";"); } } } entity.setIssuerAreaUserNames(issuerUserNames.toString()); } } /** * 保存/提交业务联系函 * * @return * @throws Exception */ public String save() throws Exception { @SuppressWarnings("unchecked") List<FileItem> files = (List<FileItem>) super.sessionManager .get("FILES"); String ids = super.getRequest().getParameter("idff"); UserInfo userInfo = this.getUser(); String isSend = this.getRequest().getParameter("entity.isSend"); String isemegency = this.getRequest().getParameter("entity.isemegency"); if (null == entity) { entity = new BusinessContactLetter(); } if (StringUtils.isBlank(isemegency)) { isemegency = "0"; } if (StringUtils.isNotBlank(ids)) { entity.setId(ids); } entity.setDocumentNumber(commonOrderCodeService .generatorLetterCode(userInfo.getRegionId())); entity.setIsSend(isSend);// 是否发送短信 entity.setIsEmergency(isemegency);// 是否紧急 String isneedCheck = this.getRequest().getParameter("isneedCheck"); entity.setReleaseTime(new Date());// 发布时间 entity.setIsAudit(isneedCheck);// 是否需要审核 String status = this.getRequest().getParameter("entity.status");// 状态 String auditUser = this.getRequest().getParameter("entity.auditUserId"); if (StringUtils.isNotBlank(auditUser)) {// 如果选择了审核人员 那就要审核了。 entity.setStatus(Constant4Bcl.WAITCHECK);// 待审核 } else { entity.setStatus(Constant4Bcl.CHECKOFF);// 直接发布 } if (status.equals("0")) { entity.setStatus("0");// 如果点击保存 则依旧是保存处理 } entity = businessContactletterservice.saveBusinessContactletter(entity, userInfo, files); boolean b = true; String retu = "queryList"; if (entity != null) { b = true; retu = setSaveReturn(entity.getId(), b); } return retu; } /** * 设置此方法的返回值 * * @param id * z主键 * @param b * 标示 * @return */ private String setSaveReturn(String id, boolean b) { String url = ""; if ("1".equals(entity.getStatus()) || "2".equals(entity.getStatus())) { url = "/contactletter/contactletter!query.action?t=" + Math.random(); assertResult(b, "联系函提交成功!", "联系函提交失败!", url); } if ("0".equals(entity.getStatus())) { url = "/contactletter/contactletter!query.action?t=" + Math.random(); assertResult(b, "联系函保存成功!", "联系函保存失败!", url); } return SUCCESS; } /** * 返回值 * * @param b * 标示 * @param s_msg * 成功信息 * @param f_msg * 错误信息 * @param url * 返回路径 */ private void assertResult(boolean b, String s_msg, String f_msg, String url) { if (b) { super.addMessage(s_msg, url, SysConstant.SUCCESS); } else { super.addMessage(f_msg, url, SysConstant.ERROR); } } public SimpleDateFormat getSdf() { return sdf; } public void setSdf(SimpleDateFormat sdf) { this.sdf = sdf; } public BusinessContactLetter getBusinessContactletter() { return entity; } public void setBusinessContactletter( BusinessContactLetter businessContactletter) { this.entity = businessContactletter; } @Override public BusinessContactLetter getModel() { return entity; } @Override protected void prepareViewModel() throws Exception { if (entity == null) { entity = new BusinessContactLetter(); } } @Override protected void prepareSaveModel() throws Exception { logger.info("save BusinessContactLetter"); } public BusinessContactLetter getEntity() { return entity; } public void setEntity(BusinessContactLetter entity) { this.entity = entity; } public ContactLetterAudit getContactLetterAudit() { return contactLetterAudit; } public void setContactLetterAudit(ContactLetterAudit contactLetterAudit) { this.contactLetterAudit = contactLetterAudit; } public BusinessContactLetterService getBusinessContactletterservice() { return businessContactletterservice; } public void setBusinessContactletterservice( BusinessContactLetterService businessContactletterservice) { this.businessContactletterservice = businessContactletterservice; } }