OrgUnitListHandlerEx.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. package com.kingdee.eas.custom.synctask.handler;
  2. import com.kingdee.bos.BOSException;
  3. import com.kingdee.bos.Context;
  4. import com.kingdee.bos.metadata.entity.*;
  5. import com.kingdee.bos.metadata.query.util.CompareType;
  6. import com.kingdee.eas.basedata.org.*;
  7. import com.kingdee.eas.common.EASBizException;
  8. import com.kingdee.eas.cp.taskmng.util.StringUtil;
  9. import com.kingdee.eas.custom.synctask.ISyncTranForIOTFacade;
  10. import com.kingdee.eas.custom.synctask.SyncTranForIOTFacadeFactory;
  11. import com.kingdee.eas.custom.synctask.SyncTranForOAFacadeFactory;
  12. import com.kingdee.eas.hr.ats.AtsUtil;
  13. import com.kingdee.eas.hr.org.web.handler.OrgUnitListHandler;
  14. import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsBody;
  15. import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsHeader;
  16. import com.kingdee.shr.base.syssetting.context.SHRContext;
  17. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  18. import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
  19. import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
  20. import org.apache.log4j.Logger;
  21. import org.springframework.ui.ModelMap;
  22. import javax.servlet.http.HttpServletRequest;
  23. import javax.servlet.http.HttpServletResponse;
  24. import java.io.FileInputStream;
  25. import java.io.IOException;
  26. import java.util.*;
  27. import org.apache.commons.lang3.StringUtils;
  28. /**
  29. * @author qingwu
  30. * @date 2024/10/21
  31. * @apiNote
  32. */
  33. public class OrgUnitListHandlerEx extends OrgUnitListHandler {
  34. Logger logger = Logger.getLogger(OrgUnitListHandlerEx.class);
  35. private Context ctx = SHRContext.getInstance().getContext();
  36. private Properties propt = new Properties();
  37. private static Map<String, Integer> personStatusMap = new HashMap<String, Integer>();
  38. static {
  39. personStatusMap.put("集团", 1);//集团
  40. personStatusMap.put("公司", 2);//公司
  41. personStatusMap.put("一级组织", 3);//一级组织 区域
  42. personStatusMap.put("二级组织", 4);//二级组织 分公司
  43. personStatusMap.put("三级组织", 5);//三级组织 子公司
  44. personStatusMap.put("四级组织", 6);//四级组织 管理
  45. }
  46. public OrgUnitListHandlerEx() throws BOSException {
  47. String syncOAConfigPath = System.getProperty("EAS_HOME") + "/server/properties/scy/syncIOTConfig.properties";
  48. try {
  49. propt.load(new FileInputStream(syncOAConfigPath));
  50. } catch (IOException e) {
  51. e.printStackTrace();
  52. String errorMsg = "获取配置文件报错,请检查配置:" + syncOAConfigPath + " " + e.getMessage();
  53. throw new BOSException(errorMsg);
  54. }
  55. }
  56. /**
  57. * 获取组织批处理信息
  58. *
  59. * @param request
  60. * @param response
  61. * @param modelMap
  62. * @return
  63. */
  64. public void getAdminOrgBatchInfoAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws BOSException, ShrWebBizException {
  65. try {
  66. IAdminOrgUnit iAdminOrgUnit = AdminOrgUnitFactory.getLocalInstance(ctx);
  67. AdminOrgUnitCollection adminOrgUnitCollection = null;
  68. String ids = request.getParameter("ids");
  69. if (StringUtil.isEmpty(ids)) {
  70. adminOrgUnitCollection = iAdminOrgUnit.getAdminOrgUnitCollection();
  71. } else {
  72. Set<String> adminOrgIds = AtsUtil.toSet(ids);
  73. FilterInfo filterInfo = new FilterInfo();
  74. FilterItemCollection filterItems = filterInfo.getFilterItems();
  75. filterItems.add(new FilterItemInfo("id", adminOrgIds, CompareType.INCLUDE));
  76. EntityViewInfo entityViewInfo = EntityViewInfo.getInstance(filterInfo, null, null);
  77. adminOrgUnitCollection = iAdminOrgUnit.getAdminOrgUnitCollection(entityViewInfo);
  78. }
  79. List list = new ArrayList();
  80. for (int i = 0; i < adminOrgUnitCollection.size(); i++) {
  81. AdminOrgUnitInfo adminOrgUnitInfo = adminOrgUnitCollection.get(i);
  82. list.add(adminOrgUnitInfo);
  83. }
  84. JSONUtils.SUCCESS(list);
  85. } catch (Exception e) {
  86. e.printStackTrace();
  87. throw new ShrWebBizException(e);
  88. }
  89. }
  90. /**
  91. * 同步IOT平台
  92. *
  93. * @param request
  94. * @param response
  95. * @param modelMap
  96. * @return 后续如需部署生产去掉Ex
  97. */
  98. public Map syncOrgUnitToIotAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws BOSException, ShrWebBizException {
  99. try {
  100. String billds = request.getParameter("billIds");
  101. logger.error("_syncOrgUnitToOA---billds: " + billds);
  102. Set<String> adminOrgIds = null;
  103. if (StringUtils.isEmpty(billds)) {
  104. IAdminOrgUnit iAdminOrgUnit = AdminOrgUnitFactory.getLocalInstance(ctx);
  105. AdminOrgUnitCollection adminOrgUnitCollection = iAdminOrgUnit.getAdminOrgUnitCollection("select id ,name,number");
  106. StringBuilder sb = new StringBuilder();
  107. for (int i = 0; i < adminOrgUnitCollection.size(); i++) {
  108. String adminOrgId = adminOrgUnitCollection.get(i).getId().toString();
  109. sb.append(adminOrgId).append(",");
  110. }
  111. sb.deleteCharAt(sb.lastIndexOf(","));
  112. billds = sb.toString();
  113. }
  114. adminOrgIds = AtsUtil.toSet(billds);
  115. //部署测试环境需要注释此行
  116. ISyncTranForIOTFacade iSyncTranForIOTFacade = SyncTranForIOTFacadeFactory.getLocalInstance(ctx);
  117. Map<String, List<Map<String, String>>> result = iSyncTranForIOTFacade.syncOrgUnitToIot(billds);
  118. logger.error("result---" + result);
  119. List<Map<String, String>> list = result.get("data");
  120. int success = adminOrgIds.size();
  121. int failure = 0;
  122. BatchMessageTipsHeader batchMessageTipsHeader = new BatchMessageTipsHeader();
  123. if (list.size() > 0) {
  124. failure = list.size();
  125. for (int i = 0; i < list.size(); i++) {
  126. BatchMessageTipsBody body = new BatchMessageTipsBody();
  127. Map<String, String> map = list.get(i);
  128. body.setId(map.get("id"));
  129. body.setMuitTipsState(Boolean.FALSE);
  130. body.setMuitTipsMessage(map.get("msg"));
  131. batchMessageTipsHeader.addResult(body);
  132. }
  133. success -= list.size();
  134. }
  135. logger.error("handleEnableWithTips----- >> ");
  136. batchMessageTipsHeader.setBillId(billds);
  137. batchMessageTipsHeader.setFailureCount(failure);
  138. batchMessageTipsHeader.setSuccessCount(success);
  139. logger.error("batchMessageTipsHeader " + batchMessageTipsHeader.getSuccessCount());
  140. request.setAttribute("res_method_data", batchMessageTipsHeader);
  141. this.writeSuccessData(batchMessageTipsHeader);
  142. logger.error("handleEnableWithTips----- end ");
  143. } catch (SHRWebException e) {
  144. e.printStackTrace();
  145. throw new ShrWebBizException(e);
  146. } catch (EASBizException e) {
  147. throw new ShrWebBizException(e);
  148. }
  149. return null;
  150. }
  151. /**
  152. * 同步OA部门
  153. *
  154. * @param request
  155. * @param response
  156. * @param modelMap
  157. * @throws BOSException
  158. * @throws EASBizException
  159. */
  160. public void syncOrgUnitToOAAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws BOSException, EASBizException, ShrWebBizException {
  161. String billIds = request.getParameter("billIds");
  162. //同步组织到OA
  163. //Map map = SyncTranForOAFacadeFactory.getLocalInstance(ctx).syncOrgUnitToOA(billIds, null);
  164. try {
  165. IAdminOrgUnit iAdminOrgUnit = AdminOrgUnitFactory.getLocalInstance(ctx);
  166. String billds = request.getParameter("billIds");
  167. logger.error("_syncOrgUnitToOA---billds: " + billds);
  168. Set<String> adminOrgIds = null;
  169. if (StringUtils.isEmpty(billds)) {
  170. AdminOrgUnitCollection adminOrgUnitCollection = iAdminOrgUnit.getAdminOrgUnitCollection("select id ,name,number");
  171. StringBuilder sb = new StringBuilder();
  172. for (int i = 0; i < adminOrgUnitCollection.size(); i++) {
  173. String adminOrgId = adminOrgUnitCollection.get(i).getId().toString();
  174. sb.append(adminOrgId).append(",");
  175. }
  176. sb.deleteCharAt(sb.lastIndexOf(","));
  177. billds = sb.toString();
  178. }
  179. adminOrgIds = AtsUtil.toSet(billds);
  180. Map<String, List<Map<String, String>>> result = SyncTranForOAFacadeFactory.getLocalInstance(ctx).syncOrgUnitToOA(billIds, null);
  181. if (result != null && !result.isEmpty()) {
  182. logger.error("handleEnableWithTips----- start ");
  183. logger.error("handleEnableWithTips----- billId-- " + billIds);
  184. AdminOrgUnitCollection adminOrgUnitCollection = iAdminOrgUnit.getAdminOrgUnitCollection("select id,number where id in (" + AtsUtil.getStrFromString(billds) + ")");
  185. int sucess = 0;
  186. int failure = 0;
  187. BatchMessageTipsHeader batchMessageTipsHeader = new BatchMessageTipsHeader();
  188. for (int i = 0; i < adminOrgUnitCollection.size(); i++) {
  189. BatchMessageTipsBody body = new BatchMessageTipsBody();
  190. AdminOrgUnitInfo adminOrgUnitInfo = adminOrgUnitCollection.get(i);
  191. body.setId(adminOrgUnitInfo.getId().toString());
  192. String adminOrgNumber = adminOrgUnitInfo.getNumber();
  193. Map<String, String> map = (Map<String, String>) result.get(adminOrgNumber);
  194. logger.error("map----" + map);
  195. if (map == null) {
  196. ++failure;
  197. body.setMuitTipsState(Boolean.FALSE);
  198. body.setMuitTipsMessage("同步数据不能为空或检查是否同步OA字段是否等于否!");
  199. } else {
  200. if ("success".equals(map.get("state"))) {
  201. ++sucess;
  202. body.setMuitTipsState(Boolean.TRUE);
  203. body.setMuitTipsMessage(map.get("msg"));
  204. } else {
  205. ++failure;
  206. body.setMuitTipsState(Boolean.FALSE);
  207. body.setMuitTipsMessage(map.get("msg"));
  208. }
  209. }
  210. batchMessageTipsHeader.addResult(body);
  211. }
  212. logger.error("handleEnableWithTips----- >> ");
  213. batchMessageTipsHeader.setBillId(billds);
  214. batchMessageTipsHeader.setFailureCount(failure);
  215. batchMessageTipsHeader.setSuccessCount(sucess);
  216. logger.error("batchMessageTipsHeader " + batchMessageTipsHeader.getSuccessCount());
  217. request.setAttribute("res_method_data", batchMessageTipsHeader);
  218. this.writeSuccessData(batchMessageTipsHeader);
  219. logger.error("handleEnableWithTips----- end ");
  220. }
  221. } catch (SHRWebException e) {
  222. e.printStackTrace();
  223. throw new ShrWebBizException(e);
  224. }
  225. }
  226. }