**
4、NC发送系统邮件给员工
**
发送邮件给员工
util类:
package nc.pub.uap.util;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import nc.bs.framework.common.NCLocator;
import nc.itf.hi.IPsndocQryService;
import nc.itf.org.IOrgUnitQryService;
import nc.message.pub.mobile.SMSAndMailUtil;
import nc.message.vo.MessageVO;
import nc.message.vo.NCMessage;
import nc.pub.templet.converter.util.helper.ExceptionUtils;
import nc.vo.hi.psndoc.PsndocAggVO;
import nc.vo.hrhi.pub.tool.GenPsnPWDForMDMUtil;
import nc.vo.org.OrgVO;
import nc.vo.pub.BusinessException;
/**
- 消息发送工具类
- 目前已有邮件发送方式,其他方式可根据实际需要扩展该类
- @author lzm
/
**
public class SendMessageUtil {*
/**
* 构建单条消息VO
* @param subject 标题
* @param content 正文
* @param recuserid 接收人:用户主键或者员工邮箱地址
* @param msgtype 消息类型 0=NC,1=邮件,2=短信,3=NC、邮件、短信,
* @return
*/
public MessageVO getMessageVO(String subject,String content,String recuserid,String msgtype){
MessageVO vo = new MessageVO();
vo.setContent(content.trim());
vo.setReceiver(recuserid.trim());
vo.setSubject(subject.trim());
vo.setMsgtype(msgtype);
return vo;
}
/**
* 构建多条消息VOS
* @param subject 标题
* @param content 正文
* @param recuserid 接收人:用户主键或者员工邮箱地址
* @param msgtype 消息类型 0=NC,1=邮件,2=短信,3=NC、邮件、短信,
* @return
*/
public MessageVO[] getMessageVOs(String subject,String content,String recuserid,String msgtype){
List<MessageVO> list = new ArrayList<MessageVO>();
list.add(getMessageVO(subject,content,recuserid,msgtype));
return list.toArray(new MessageVO[list.size()]);
}
/**
* 以邮件方式发送消息
* @param vos
*/
public void sendMessageByEmail(MessageVO[] vos){
if(vos == null || vos.length<=0){
return;
}
//1-邮件
if ("1".equals(vos[0].getMsgtype())) {
List<NCMessage> ncMessageList = new ArrayList<NCMessage>();
for(MessageVO vo : vos){
NCMessage msg = new NCMessage();
msg.setMessage(vo);
ncMessageList.add(msg);
}
if(ncMessageList!=null && ncMessageList.size()>0){
try{
SMSAndMailUtil.sendMailSMS(ncMessageList.toArray(new NCMessage[ncMessageList.size()]));
}catch(Exception e){
e.printStackTrace();
ExceptionUtils.wrapException(e);
}
}
}
//2-短信 add by laihp 20180626
if ("2".equals(vos[0].getMsgtype())) {
List<NCMessage> ncMessageList = new ArrayList<NCMessage>();
String [][]targetPhones = new String[vos.length][1];
String []contents = new String[vos.length];
for(int i=0; i<vos.length; i++){
MessageVO vo = vos[i];
contents[i] = vo.getContent();
targetPhones[i][0] = vo.getReceiver();
}
if(ncMessageList!=null && ncMessageList.size()>0){
try{
// SMSAndMailUtil.sendMailSMS(ncMessageList.toArray(new NCMessage[ncMessageList.size()]));
// SMSAndMailUtil.sendSMS(targetPhones, contents);
}catch(Exception e){
e.printStackTrace();
ExceptionUtils.wrapException(e);
}
}
}
}
/**
* 以邮件方式发送消息
* @param vos
*/
public void sendMessageWithOrg(MessageVO[] vos, String pk_org){
if(vos == null || vos.length<=0){
return;
}
//1-邮件
if ("1".equals(vos[0].getMsgtype())) {
List<NCMessage> ncMessageList = new ArrayList<NCMessage>();
for(MessageVO vo : vos){
NCMessage msg = new NCMessage();
msg.setMessage(vo);
ncMessageList.add(msg);
}
if(ncMessageList!=null && ncMessageList.size()>0){
try{
SMSAndMailUtil.sendMailSMS(ncMessageList.toArray(new NCMessage[ncMessageList.size()]));
}catch(Exception e){
e.printStackTrace();
ExceptionUtils.wrapException(e);
}
}
}
//2-短信 add by laihp 20180626
if ("2".equals(vos[0].getMsgtype())) {
List<NCMessage> ncMessageList = new ArrayList<NCMessage>();
String []targetPhones = new String[vos.length];
String []contents = new String[vos.length];
for(int i=0; i<vos.length; i++){
MessageVO vo = vos[i];
contents[i] = vo.getContent();
targetPhones[i] = vo.getReceiver();
}
try{
// SMSAndMailUtil.sendMailSMS(ncMessageList.toArray(new NCMessage[ncMessageList.size()]));
sms_Send.sendSySms(targetPhones, contents, pk_org);
}catch(Exception e){
e.printStackTrace();
ExceptionUtils.wrapException(e);
}
}
}
/**
* 根据员工任职记录主键获取员工初始化密码及账号
* @param psnJobPks
* @return
* @throws BusinessException
*/
public List<MessageVO> getPsnIniCodeAndPWDMsgVOsByPsnJob(String[] psnJobPks) throws BusinessException{
List<MessageVO> msgList = new ArrayList<MessageVO>();
IPsndocQryService qry = NCLocator.getInstance().lookup(IPsndocQryService.class);
PsndocAggVO[] aggVOs = qry.queryPsndocVOByPks(psnJobPks);
if(aggVOs!=null && aggVOs.length>0){
msgList = getPsnInitPasswdMsgVOs(aggVOs);
}
return msgList;
}
/**
* 根据员工任职记录主键获取员工初始化密码及账号-短信
* @param psnJobPks
* @return
* @throws BusinessException
*/
public List<MessageVO> getPsnIniCodeAndPWDMsgVOsByPsnJob4SMS(String[] psnJobPks) throws BusinessException{
List<MessageVO> msgList = new ArrayList<MessageVO>();
IPsndocQryService qry = NCLocator.getInstance().lookup(IPsndocQryService.class);
PsndocAggVO[] aggVOs = qry.queryPsndocVOByPks(psnJobPks);
if(aggVOs!=null && aggVOs.length>0){
msgList = getPsnInitPasswdMsgVOs4SMS(aggVOs);
}
return msgList;
}
/**
* 根据员工主键获取员工初始化密码及账号
* @param psnPks
* @return
* @throws BusinessException
*/
public List<MessageVO> getPsnInitCodeAndPWDMsgVOsByPks(String[] psnPks) throws BusinessException{
List<MessageVO> msgList = new ArrayList<MessageVO>();
IPsndocQryService qry = NCLocator.getInstance().lookup(IPsndocQryService.class);
PsndocAggVO[] aggVOs = qry.queryPsndocVOByPks(psnPks);
if(aggVOs!=null && aggVOs.length>0){
msgList = getPsnInitPasswdMsgVOs(aggVOs);
}
return msgList;
}
/**
* 根据人员信息AGGVO批量获取人员初始化密码及账号信息数据
* @param aggVOs
* @return
* @throws BusinessException
*/
public List<MessageVO> getPsnInitPasswdMsgVOs(PsndocAggVO[] aggVOs) throws BusinessException{
List<MessageVO> msgList = new ArrayList<MessageVO>();
IOrgUnitQryService orgservice = NCLocator.getInstance().lookup(IOrgUnitQryService.class);
for(PsndocAggVO aggVO:aggVOs){
Object mdmpwd = aggVO.getParentVO().getAttributeValue("glbdef45");
if(mdmpwd!=null && StringUtils.isNotEmpty(aggVO.getParentVO().getEmail())){
OrgVO orgVO = orgservice.getOrg(aggVO.getParentVO().getPk_org());
if(orgVO!=null && StringUtils.isNotEmpty(orgVO.getOrganizationcode())){
// new GenPsnPWDForMDMUtil();
//解密
String decodestr = GenPsnPWDForMDMUtil.EnAndDecryptByAES(mdmpwd.toString(),orgVO.getOrganizationcode(),1);
MessageVO msgVO = new SendMessageUtil().getMessageVO(“通知:登录各业务系统的账号和初始化密码”, aggVO.getParentVO().getName() + “,您好!您登录各业务系统的账号:”+aggVO.getParentVO().getCode()+",初始化密码:"+decodestr+",请妥善保存并及早修改密码。\n", aggVO.getParentVO().getMobile(), “1”);//1=邮件
// MessageVO msgVO = new SendMessageUtil().getMessageVO(“通知:登录各业务系统的账号和初始化密码”, aggVO.getParentVO().getName() + “,您好!您登录HRP、OA、PC内门户和移动内门户等系统的账号:”+aggVO.getParentVO().getCode()+",初始化密码:"+decodestr+",请妥善保存并及早修改密码。\n", aggVO.getParentVO().getMobile(), “2”);//1=邮件
msgList.add(msgVO);
}
}
}
return msgList;
}
/**
* 根据人员信息AGGVO批量获取人员初始化密码及账号信息数据 -- 短信部分
* @param aggVOs
* @return
* @throws BusinessException
*
* add by laihp
*/
public List<MessageVO> getPsnInitPasswdMsgVOs4SMS(PsndocAggVO[] aggVOs) throws BusinessException{
List<MessageVO> msgList = new ArrayList<MessageVO>();
IOrgUnitQryService orgservice = NCLocator.getInstance().lookup(IOrgUnitQryService.class);
for(PsndocAggVO aggVO:aggVOs){
Object mdmpwd = aggVO.getParentVO().getAttributeValue("glbdef45");
if(mdmpwd!=null && StringUtils.isNotEmpty(aggVO.getParentVO().getMobile())){
OrgVO orgVO = orgservice.getOrg(aggVO.getParentVO().getPk_org());
if(orgVO!=null && StringUtils.isNotEmpty(orgVO.getOrganizationcode())){
// new GenPsnPWDForMDMUtil();
//解密
String decodestr = GenPsnPWDForMDMUtil.EnAndDecryptByAES(mdmpwd.toString(),orgVO.getOrganizationcode(),1);
// String decodestr = “123456”;
MessageVO msgVO = new SendMessageUtil().getMessageVO(“通知:登录各业务系统的账号和初始化密码”, aggVO.getParentVO().getName() + “,您好!您登录各业务系统的账号:”+aggVO.getParentVO().getCode()+",初始化密码:"+decodestr+",请妥善保存并及早修改密码。\n", aggVO.getParentVO().getMobile(), “2”);//1=邮件
// MessageVO msgVO = new SendMessageUtil().getMessageVO(“通知:登录各业务系统的账号和初始化密码”, aggVO.getParentVO().getName() + “,您好!您登录HRP、OA、PC内门户和移动内门户等系统的账号:”+aggVO.getParentVO().getCode()+",初始化密码:"+decodestr+",请妥善保存并及早修改密码。\n", aggVO.getParentVO().getMobile(), “2”);//1=邮件
msgList.add(msgVO);
}
}
}
return msgList;
}
}//util类代码结束
代码:
PsndocAggVO[] selectedAggVOs = new PsndocAggVO[selectedObjs.length];
try{
for(int i=0;i<selectedObjs.length;i++){
selectedAggVOs[i] = (PsndocAggVO) selectedObjs[i];
}
List<MessageVO> msgList = new SendMessageUtil().getPsnInitPasswdMsgVOs(selectedAggVOs);
if(msgList!=null && msgList.size()>0){
new SendMessageUtil().sendMessageByEmail(msgList.toArray(new MessageVO[msgList.size()]));
MessageDialog.showHintDlg(new Container(), "密码发送", "批量发送员工初始化密码到员工邮箱成功!");
}else{
MessageDialog.showHintDlg(new Container(), "密码发送", "所选择人员没有初始化密码或者电子邮件为空,无法发送!");
}
}catch(Exception ex){
ex.printStackTrace();
MessageDialog.showErrorDlg(new Container(), "密码发送", "批量发送员工初始化密码到员工邮箱失败:"+ex.getMessage());
}