a3e6e9dc8aa621b7ec3271993203539f8cc8ddfd.svn-base 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package com.kingdee.eas.custom.facade.worktime;
  2. import java.io.BufferedInputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.net.URL;
  8. import java.net.URLConnection;
  9. import org.apache.log4j.Logger;
  10. import javax.ejb.*;
  11. import java.nio.charset.StandardCharsets;
  12. import java.io.IOException;
  13. import java.nio.file.Files;
  14. import java.nio.file.Path;
  15. import java.nio.file.Paths;
  16. import java.rmi.RemoteException;
  17. import java.sql.SQLException;
  18. import java.util.HashSet;
  19. import java.util.Set;
  20. import com.kingdee.bos.*;
  21. import com.kingdee.bos.util.BOSObjectType;
  22. import com.kingdee.eas.base.param.IParamControl;
  23. import com.kingdee.eas.base.param.ParamControlFactory;
  24. import com.kingdee.eas.common.EASBizException;
  25. import com.kingdee.eas.custom.utils.SendUtils;
  26. import com.kingdee.eas.mobile.BOSMsgTypeEnum;
  27. import com.kingdee.eas.mobile.MimeTypeEnum;
  28. import com.kingdee.eas.mobile.PriorityEnum;
  29. import com.kingdee.eas.mobile.msg.util.MsgUtil;
  30. import com.kingdee.eas.util.app.DbUtil;
  31. import com.kingdee.jdbc.rowset.IRowSet;
  32. import com.kingdee.shr.base.syssetting.context.SHRContext;
  33. import com.kingdee.bos.metadata.IMetaDataPK;
  34. import com.kingdee.bos.metadata.rule.RuleExecutor;
  35. import com.kingdee.bos.metadata.MetaDataPK;
  36. //import com.kingdee.bos.metadata.entity.EntityViewInfo;
  37. import com.kingdee.bos.framework.ejb.AbstractEntityControllerBean;
  38. import com.kingdee.bos.message.common.KDMemAttachment;
  39. import com.kingdee.bos.message.common.KDMessageAttachment;
  40. import com.kingdee.bos.framework.ejb.AbstractBizControllerBean;
  41. //import com.kingdee.bos.dao.IObjectPK;
  42. import com.kingdee.bos.dao.IObjectValue;
  43. import com.kingdee.bos.dao.IObjectCollection;
  44. import com.kingdee.bos.service.ServiceContext;
  45. import com.kingdee.bos.service.IServiceContext;
  46. import java.util.Base64;
  47. /**
  48. * 除转正、加班、提报单以外,其他单据到审批人节点时间(按天)算起,超过两天未审批则提醒当前审批人
  49. *
  50. * @author ISSUSER
  51. *
  52. */
  53. public class RemindFacadeControllerBean extends AbstractRemindFacadeControllerBean {
  54. private static Logger logger = Logger
  55. .getLogger("com.kingdee.eas.custom.facade.worktime.RemindFacadeControllerBean");
  56. @Override
  57. public void _remindWraning(Context ctx) throws BOSException {
  58. Set<String> appovedSet = new HashSet();
  59. try {
  60. IRowSet appovedRowSet = getAppoved(ctx);
  61. // 获取链接
  62. IParamControl ipc = ParamControlFactory.getLocalInstance(ctx);
  63. String shrEnvironmentIP = ipc.getParamValue(null, "shrEnvironmentIP");
  64. String website = shrEnvironmentIP + "/home.do";
  65. while (appovedRowSet.next()) {
  66. // 获取审批人
  67. String personempId = appovedRowSet.getString("FPERSONEMPID");
  68. String title = "Reminder: Pending approval workflow";
  69. //
  70. if (!appovedSet.contains(personempId)) {
  71. // 拼接内容
  72. StringBuffer conteBuffer = new StringBuffer();
  73. conteBuffer.append("<html><head></head><body>");
  74. conteBuffer.append("<span>Dear " + appovedRowSet.getString("FPERSONEMPNAME_L1") + ":</span><br>");
  75. conteBuffer.append("<span></span><br>");
  76. conteBuffer.append(
  77. "<span>A kind reminder to tasks pending your approval. Please log in to the system to view details in To-Be-Processed in My Tasks and act on pending approval tasks at your earliest convenience.</span><br>");
  78. conteBuffer.append("<span></span><br>");
  79. conteBuffer.append("<span><a href=\"" + website + "\">" + website + "</a></span><br>");
  80. conteBuffer.append("<span></span><br>");
  81. conteBuffer
  82. .append("<span>This is an automatic workflow email. Do not reply to this mail.</span><br>");
  83. conteBuffer.append("<span></span><br>");
  84. conteBuffer.append("<span>Best regards,</span><br>");
  85. conteBuffer.append("<span>Human Resources Department</span>");
  86. conteBuffer.append("</body></html>");
  87. //
  88. SendUtils.msgSend(ctx, title, PriorityEnum.HIGHT_VALUE, false, conteBuffer.toString(),
  89. appovedRowSet.getString("FPERSONEMPID"), BOSMsgTypeEnum.V_TYPE_EMAIL, null, null,
  90. MimeTypeEnum.HTML);
  91. // SendUtils.msgSend(ctx, title, PriorityEnum.HIGHT_VALUE, false, conteBuffer.toString(),
  92. // "1CV1Xix+Qua9UEeo/uZ6TIDvfe0=", BOSMsgTypeEnum.V_TYPE_EMAIL, null, null,
  93. // MimeTypeEnum.HTML);
  94. appovedSet.add(personempId);
  95. }
  96. }
  97. } catch (SQLException e) {
  98. e.printStackTrace();
  99. } catch (EASBizException e) {
  100. e.printStackTrace();
  101. }
  102. }
  103. /***
  104. * 查询除转正、加班、提报单以外,其他单据到审批人节点时间(按天)算起,超过两天未审批 的审批人
  105. * @param ctx
  106. * @return
  107. */
  108. public IRowSet getAppoved(Context ctx) {
  109. String sql = "SELECT a.* FROM T_WFR_Assign a left join T_BAS_AssignRead b on a.FASSIGNID=b.FASSIGNID where b.FBosType not in('C46A580E','B11DBA5C','B65CCEF1') and DATEDIFF(day,a.flaststatetime, GETDATE()) > 2 ;";
  110. IRowSet rs = null;
  111. try {
  112. rs = DbUtil.executeQuery(ctx, sql);
  113. } catch (BOSException e) {
  114. // TODO 自动生成的 catch 块
  115. e.printStackTrace();
  116. }
  117. return rs;
  118. }
  119. // // 拼接的内容
  120. // public KDMemAttachment[] getContent() {
  121. // String imageFilePath = "http://119.3.222.91:6888/shr/leaveTemplate/Image_20240118150510.png";
  122. // KDMemAttachment[] kdments=new KDMemAttachment[1];
  123. // // 读取图片文件
  124. // try {
  125. // // 读取本地图片文件
  126. // File imageFile = new File("D:/rz/cs.png");
  127. // byte[] imageData = new byte[(int) imageFile.length()];
  128. // FileInputStream fis = new FileInputStream(imageFile);
  129. // BufferedInputStream bis = new BufferedInputStream(fis);
  130. // bis.read(imageData, 0, imageData.length);
  131. // bis.close();
  132. // fis.close();;
  133. //
  134. // KDMemAttachment attachment = new KDMemAttachment();
  135. // attachment.setName("example_image"); // 设置附件名称
  136. // attachment.setSize(imageData.length); // 设置附件大小
  137. // attachment.setData(imageData); // 设置附件数据
  138. //
  139. // kdments[0] = attachment;
  140. //
  141. // } catch (IOException e) {
  142. // // TODO 自动生成的 catch 块
  143. // e.printStackTrace();
  144. // }
  145. //
  146. // return kdments;
  147. //
  148. // }
  149. }