OrgUnitListHandlerEx.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. package com.kingdee.eas.custom.synctask.handler;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import com.kingdee.bos.BOSException;
  5. import com.kingdee.bos.Context;
  6. import com.kingdee.bos.metadata.entity.*;
  7. import com.kingdee.bos.metadata.query.util.CompareType;
  8. import com.kingdee.eas.basedata.org.*;
  9. import com.kingdee.eas.basedata.person.PersonCollection;
  10. import com.kingdee.eas.basedata.person.PersonInfo;
  11. import com.kingdee.eas.common.EASBizException;
  12. import com.kingdee.eas.cp.taskmng.util.StringUtil;
  13. import com.kingdee.eas.custom.log.ISyncLog;
  14. import com.kingdee.eas.custom.log.SyncLogFactory;
  15. import com.kingdee.eas.custom.log.SyncLogInfo;
  16. import com.kingdee.eas.custom.log.app.DataDirectionEnum;
  17. import com.kingdee.eas.custom.log.app.DockingSystemEnum;
  18. import com.kingdee.eas.custom.log.app.SyncEntityNameEnum;
  19. import com.kingdee.eas.custom.log.app.SyncStatusEnum;
  20. import com.kingdee.eas.custom.synctask.ISyncTranForIOTFacade;
  21. import com.kingdee.eas.custom.synctask.SyncTranForIOTFacadeFactory;
  22. import com.kingdee.eas.custom.synctask.SyncTranForOAFacadeFactory;
  23. import com.kingdee.eas.custom.synctask.util.ExpiringMapCache;
  24. import com.kingdee.eas.hr.ats.AtsUtil;
  25. import com.kingdee.eas.hr.org.web.handler.OrgUnitListHandler;
  26. import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsBody;
  27. import com.kingdee.shr.base.syssetting.api.bean.BatchMessageTipsHeader;
  28. import com.kingdee.shr.base.syssetting.context.SHRContext;
  29. import com.kingdee.shr.base.syssetting.exception.SHRWebException;
  30. import com.kingdee.shr.base.syssetting.exception.ShrWebBizException;
  31. import com.kingdee.shr.base.syssetting.web.json.JSONUtils;
  32. import okhttp3.*;
  33. import org.springframework.util.DigestUtils;
  34. import org.apache.log4j.Logger;
  35. import org.springframework.ui.ModelMap;
  36. import javax.servlet.http.HttpServletRequest;
  37. import javax.servlet.http.HttpServletResponse;
  38. import java.io.FileInputStream;
  39. import java.io.IOException;
  40. import java.util.*;
  41. import org.apache.commons.lang3.StringUtils;
  42. /**
  43. * @author qingwu
  44. * @date 2024/10/21
  45. * @apiNote
  46. */
  47. public class OrgUnitListHandlerEx extends OrgUnitListHandler {
  48. Logger logger = Logger.getLogger(OrgUnitListHandlerEx.class);
  49. private Context ctx = SHRContext.getInstance().getContext();
  50. private Properties propt = new Properties();
  51. //缓存
  52. private static ExpiringMapCache<String, String> cache = new ExpiringMapCache();
  53. private static Map<String, Integer> personStatusMap = new HashMap<String, Integer>();
  54. static {
  55. personStatusMap.put("集团", 1);//集团
  56. personStatusMap.put("公司", 2);//公司
  57. personStatusMap.put("一级组织", 3);//一级组织 区域
  58. personStatusMap.put("二级组织", 4);//二级组织 分公司
  59. personStatusMap.put("三级组织", 5);//三级组织 子公司
  60. personStatusMap.put("四级组织", 6);//四级组织 管理
  61. }
  62. public OrgUnitListHandlerEx() throws BOSException {
  63. String syncOAConfigPath = System.getProperty("EAS_HOME") + "/server/properties/scy/syncIOTConfig.properties";
  64. try {
  65. propt.load(new FileInputStream(syncOAConfigPath));
  66. } catch (IOException e) {
  67. e.printStackTrace();
  68. String errorMsg = "获取配置文件报错,请检查配置:" + syncOAConfigPath + " " + e.getMessage();
  69. throw new BOSException(errorMsg);
  70. }
  71. }
  72. /**
  73. * 获取组织批处理信息
  74. *
  75. * @param request
  76. * @param response
  77. * @param modelMap
  78. * @return
  79. */
  80. public void getAdminOrgBatchInfoAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws BOSException, ShrWebBizException {
  81. try {
  82. IAdminOrgUnit iAdminOrgUnit = AdminOrgUnitFactory.getLocalInstance(ctx);
  83. AdminOrgUnitCollection adminOrgUnitCollection = null;
  84. String ids = request.getParameter("ids");
  85. if (StringUtil.isEmpty(ids)) {
  86. adminOrgUnitCollection = iAdminOrgUnit.getAdminOrgUnitCollection();
  87. } else {
  88. Set<String> adminOrgIds = AtsUtil.toSet(ids);
  89. FilterInfo filterInfo = new FilterInfo();
  90. FilterItemCollection filterItems = filterInfo.getFilterItems();
  91. filterItems.add(new FilterItemInfo("id", adminOrgIds, CompareType.INCLUDE));
  92. EntityViewInfo entityViewInfo = EntityViewInfo.getInstance(filterInfo, null, null);
  93. adminOrgUnitCollection = iAdminOrgUnit.getAdminOrgUnitCollection(entityViewInfo);
  94. }
  95. List list = new ArrayList();
  96. for (int i = 0; i < adminOrgUnitCollection.size(); i++) {
  97. AdminOrgUnitInfo adminOrgUnitInfo = adminOrgUnitCollection.get(i);
  98. list.add(adminOrgUnitInfo);
  99. }
  100. JSONUtils.SUCCESS(list);
  101. } catch (Exception e) {
  102. e.printStackTrace();
  103. throw new ShrWebBizException(e);
  104. }
  105. }
  106. /**
  107. * 同步IOT平台
  108. *
  109. * @param request
  110. * @param response
  111. * @param modelMap
  112. * @return
  113. */
  114. public Map syncOrgUnitToIotAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws BOSException, ShrWebBizException {
  115. try {
  116. String billds = request.getParameter("billIds");
  117. logger.error("_syncOrgUnitToOA---billds: " + billds);
  118. Set<String> adminOrgIds = null;
  119. if (StringUtils.isEmpty(billds)) {
  120. IAdminOrgUnit iAdminOrgUnit = AdminOrgUnitFactory.getLocalInstance(ctx);
  121. AdminOrgUnitCollection adminOrgUnitCollection = iAdminOrgUnit.getAdminOrgUnitCollection("select id ,name,number");
  122. StringBuilder sb = new StringBuilder();
  123. for (int i = 0; i < adminOrgUnitCollection.size(); i++) {
  124. String adminOrgId = adminOrgUnitCollection.get(i).getId().toString();
  125. sb.append(adminOrgId).append(",");
  126. }
  127. sb.deleteCharAt(sb.lastIndexOf(","));
  128. billds = sb.toString();
  129. }
  130. adminOrgIds = AtsUtil.toSet(billds);
  131. ISyncTranForIOTFacade iSyncTranForIOTFacade = SyncTranForIOTFacadeFactory.getLocalInstance(ctx);
  132. Map<String, List<Map<String, String>>> result = iSyncTranForIOTFacade.syncOrgUnitToIot(billds);
  133. logger.error("result---" + result);
  134. List<Map<String, String>> list = result.get("data");
  135. int success = adminOrgIds.size();
  136. int failure = 0;
  137. BatchMessageTipsHeader batchMessageTipsHeader = new BatchMessageTipsHeader();
  138. if (list.size() > 0) {
  139. failure = list.size();
  140. for (int i = 0; i < list.size(); i++) {
  141. BatchMessageTipsBody body = new BatchMessageTipsBody();
  142. Map<String, String> map = list.get(i);
  143. body.setId(map.get("id"));
  144. body.setMuitTipsState(Boolean.FALSE);
  145. body.setMuitTipsMessage(map.get("msg"));
  146. batchMessageTipsHeader.addResult(body);
  147. }
  148. success -= list.size();
  149. }
  150. logger.error("handleEnableWithTips----- >> ");
  151. batchMessageTipsHeader.setBillId(billds);
  152. batchMessageTipsHeader.setFailureCount(failure);
  153. batchMessageTipsHeader.setSuccessCount(success);
  154. logger.error("batchMessageTipsHeader " + batchMessageTipsHeader.getSuccessCount());
  155. request.setAttribute("res_method_data", batchMessageTipsHeader);
  156. this.writeSuccessData(batchMessageTipsHeader);
  157. logger.error("handleEnableWithTips----- end ");
  158. } catch (SHRWebException e) {
  159. e.printStackTrace();
  160. throw new ShrWebBizException(e);
  161. } catch (EASBizException e) {
  162. throw new ShrWebBizException(e);
  163. }
  164. return null;
  165. }
  166. /**
  167. * 同步IOT平台
  168. *
  169. * @param request
  170. * @param response
  171. * @param modelMap
  172. * @return
  173. */
  174. public Map syncOrgUnitToIotActionEx(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws BOSException, EASBizException {
  175. ISyncLog iSyncLog = SyncLogFactory.getLocalInstance(ctx);
  176. SyncLogInfo syncLogInfo = new SyncLogInfo();
  177. syncLogInfo.setEntityName(SyncEntityNameEnum.adminOrg);
  178. syncLogInfo.setDataDirection(DataDirectionEnum.outflow);
  179. syncLogInfo.setDockingSystem(DockingSystemEnum.IOT);
  180. String billds = request.getParameter("billIds");
  181. try {
  182. logger.error("_syncOrgUnitToOA---start");
  183. logger.error("_syncOrgUnitToOA---billds: " + billds);
  184. IAdminOrgUnit iAdminOrgUnit = AdminOrgUnitFactory.getLocalInstance(ctx);
  185. //String actionType = action == null ? "" : action.getValue().toLowerCase();
  186. //当参数billIds不为空值时,增量同步参数中的部门数据到OA
  187. FilterInfo filterInfo = new FilterInfo();
  188. FilterItemCollection filterItems = filterInfo.getFilterItems();
  189. filterItems.add(new FilterItemInfo("id", "00000000-0000-0000-0000-000000000000CCE7AED4", CompareType.NOTEQUALS));
  190. if (!StringUtils.isEmpty(billds)) {
  191. Set<String> adminOrgIds = AtsUtil.toSet(billds);
  192. logger.error("_syncOrgUnitToOA---adminOrgIds---" + adminOrgIds);
  193. filterItems.add(new FilterItemInfo("id", adminOrgIds, CompareType.INCLUDE));
  194. } else {
  195. AdminOrgUnitCollection adminOrgUnitCollection = iAdminOrgUnit.getAdminOrgUnitCollection("select id ,name,number");
  196. StringBuilder sb = new StringBuilder();
  197. for (int i = 0; i < adminOrgUnitCollection.size(); i++) {
  198. String adminOrgId = adminOrgUnitCollection.get(i).getId().toString();
  199. sb.append(adminOrgId).append(",");
  200. }
  201. sb.deleteCharAt(sb.lastIndexOf(","));
  202. billds = sb.toString();
  203. }
  204. SelectorItemCollection sic = new SelectorItemCollection();
  205. sic.add("*");
  206. sic.add("parent.number");
  207. sic.add("parent.id");
  208. sic.add("responPosition.name");
  209. sic.add("responPosition.number");
  210. sic.add("unitLayerType.number");
  211. sic.add("unitLayerType.name");
  212. EntityViewInfo entityViewInfo = EntityViewInfo.getInstance(filterInfo, sic, null);
  213. AdminOrgUnitCollection adminOrgUnitCollection = iAdminOrgUnit.getAdminOrgUnitCollection(entityViewInfo);
  214. JSONObject jsonObject = new JSONObject();
  215. jsonObject.put("dataSyncRule", 1);//1:组织ID存在时更新 2:组织ID存在时跳过不更新。默认值1
  216. List dataList = new ArrayList();
  217. for (int i = 0; i < adminOrgUnitCollection.size(); i++) {
  218. Map adminMap = new HashMap();
  219. AdminOrgUnitInfo adminOrgUnitInfo = adminOrgUnitCollection.get(i);
  220. OrgUnitLayerTypeInfo unitLayerType = adminOrgUnitInfo.getUnitLayerType();//行政组织类型
  221. String number = unitLayerType.getNumber();
  222. String adminOrgType = String.valueOf(personStatusMap.getOrDefault(number, 8));
  223. adminMap.put("id", adminOrgUnitInfo.getId().toString());//来源方组织ID
  224. adminMap.put("code", adminOrgUnitInfo.getNumber());//组织编码
  225. adminMap.put("name", adminOrgUnitInfo.getName());//组织名称
  226. adminMap.put("type", adminOrgType);//组织类型
  227. adminMap.put("description", "");//描述信息
  228. adminMap.put("parentId", adminOrgUnitInfo.getParent().getId().toString());//来源方上级组织ID
  229. dataList.add(adminMap);
  230. }
  231. jsonObject.put("data", dataList);//1:组织ID存在时更新 2:组织ID存在时跳过不更新。默认值1
  232. //执行同步组织到Iot
  233. Map<String, List<Map<String, String>>> result = syncOrg(jsonObject.toString(), syncLogInfo);
  234. logger.error("result---" + result);
  235. List<Map<String, String>> list = result.get("data");
  236. int success = adminOrgUnitCollection.size();
  237. int failure = 0;
  238. BatchMessageTipsHeader batchMessageTipsHeader = new BatchMessageTipsHeader();
  239. if (list.size() > 0) {
  240. failure = list.size();
  241. for (int i = 0; i < list.size(); i++) {
  242. BatchMessageTipsBody body = new BatchMessageTipsBody();
  243. Map<String, String> map = list.get(i);
  244. body.setId(map.get("id"));
  245. body.setMuitTipsState(Boolean.FALSE);
  246. body.setMuitTipsMessage(map.get("msg"));
  247. batchMessageTipsHeader.addResult(body);
  248. }
  249. success -= list.size();
  250. }
  251. logger.error("handleEnableWithTips----- >> ");
  252. batchMessageTipsHeader.setBillId(billds);
  253. batchMessageTipsHeader.setFailureCount(failure);
  254. batchMessageTipsHeader.setSuccessCount(success);
  255. logger.error("batchMessageTipsHeader " + batchMessageTipsHeader.getSuccessCount());
  256. request.setAttribute("res_method_data", batchMessageTipsHeader);
  257. this.writeSuccessData(batchMessageTipsHeader);
  258. logger.error("handleEnableWithTips----- end ");
  259. return null;
  260. } catch (Exception e) {
  261. e.printStackTrace();
  262. syncLogInfo.setSyncStatus(SyncStatusEnum.ERROR);
  263. syncLogInfo.setSyncResult(e.getMessage());
  264. iSyncLog.save(syncLogInfo);
  265. throw new BOSException(e.getMessage());
  266. }
  267. }
  268. /**
  269. * 获取token
  270. * 本地缓存token,有效时长6.5小时
  271. *
  272. * @return
  273. */
  274. public String getToken() {
  275. String token = cache.get("token");
  276. if (StringUtils.isBlank(token)) {
  277. token = getTokenByRemote();
  278. }
  279. return token;
  280. }
  281. /**
  282. * 请求方法
  283. *
  284. * @param data
  285. */
  286. public Map syncOrg(String data, SyncLogInfo syncLogInfo) throws BOSException, EASBizException {
  287. Response response = null;
  288. Map result = null;
  289. try {
  290. String syncOrgUnitApiUrl = this.propt.getProperty("syncOrgUnitApiUrl");
  291. //String syncOrgUnitApiUrl = "http://10.0.3.87/api/open/enterpriseright/org-manage/v1/external/org/batch";
  292. if (StringUtils.isBlank(syncOrgUnitApiUrl)) {
  293. throw new BOSException("syncOrgUnitApiUrl不能为空!");
  294. }
  295. logger.error("syncOrg---data-----" + data);
  296. OkHttpClient client = new OkHttpClient();
  297. MediaType mediaType = MediaType.parse("application/json");
  298. RequestBody body = RequestBody.create(mediaType, data);
  299. Request request = new Request.Builder()
  300. .url(syncOrgUnitApiUrl)
  301. .post(body)
  302. //.addHeader("Authorization", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ2UzVMT29mYiIsInNlcnZlciI6dHJ1ZSwidXNlcl9uYW1lIjoic0hSIiwicHJvamVjdE1hcCI6IntcIlNDWVwiOlwiMTMwMDgwNTYwNDAwNDA0NDgwMFwifSIsInNjb3BlIjpbInNlcnZlciJdLCJuYW1lIjoic0hSIiwicHJvamVjdCI6IiIsImV4cCI6MTczMDkxMzQwOSwidGVuYW50IjoidGFpb3QiLCJjbGllbnRfaWQiOiJzeXMifQ.hS1LVZ56rHPvVZmRdipay3XNAmmtFBZKt-wPc7UK2rg ")
  303. .addHeader("Authorization", getToken())
  304. .addHeader("Accept", "*/*")
  305. .addHeader("User-Agent", "PostmanRuntime-ApipostRuntime/1.1.0")
  306. .addHeader("Connection", "keep-alive")
  307. .addHeader("Content-Type", "application/json")
  308. .build();
  309. response = client.newCall(request).execute();
  310. String string = response.body().string();
  311. ObjectMapper objectMapper = new ObjectMapper();
  312. result = objectMapper.readValue(string, Map.class);
  313. } catch (IOException | BOSException e) {
  314. e.printStackTrace();
  315. throw new RuntimeException("同步IOT平台组织失败: " + e.getMessage());
  316. }
  317. logger.error("result-----" + result);
  318. logger.error("response.isSuccessful()-----" + response.isSuccessful());
  319. if (response.isSuccessful()) {
  320. //todo
  321. //return (String) result.get("token");
  322. syncLogInfo.setSyncStatus(SyncStatusEnum.SUCCESS);
  323. //syncLogInfo.setSyncCount(total);
  324. //syncLogInfo.setSuccessNum(success);
  325. //syncLogInfo.setFailNum(fail);
  326. syncLogInfo.setSyncResult((String) result.get("msg"));
  327. SyncLogFactory.getLocalInstance(ctx).save(syncLogInfo);
  328. } else {
  329. syncLogInfo.setSyncStatus(SyncStatusEnum.ERROR);
  330. //syncLogInfo.setSyncCount(total);
  331. //syncLogInfo.setSuccessNum(success);
  332. //syncLogInfo.setFailNum(fail);
  333. syncLogInfo.setSyncResult((String) result.get("msg"));
  334. SyncLogFactory.getLocalInstance(ctx).save(syncLogInfo);
  335. }
  336. return result;
  337. }
  338. /**
  339. * 远程获取Token
  340. *
  341. * @return
  342. */
  343. private String getTokenByRemote() {
  344. Response response = null;
  345. Map result = null;
  346. try {
  347. long now = System.currentTimeMillis();
  348. Map<String, String> params = new HashMap<>();
  349. String getTokenApiUrl = this.propt.getProperty("getTokenApiUrl");
  350. if (StringUtils.isBlank(getTokenApiUrl)) {
  351. throw new BOSException("获取token接口地址不能为空!");
  352. }
  353. String appid = this.propt.getProperty("appid");
  354. if (StringUtils.isBlank(appid)) {
  355. throw new BOSException("appid不能为空!");
  356. }
  357. String secret = this.propt.getProperty("secret");
  358. if (StringUtils.isBlank(secret)) {
  359. throw new BOSException("secret不能为空!");
  360. }
  361. params.put("appid", appid);
  362. params.put("sign_method", "md5");
  363. params.put("timestamp", now + secret);
  364. //生成签名
  365. String sign = DigestUtils.md5DigestAsHex((appendUrl(null, params)).getBytes());
  366. params.put("timestamp", String.valueOf(now));
  367. params.put("sign", sign);
  368. String requestUrl = appendUrl(getTokenApiUrl, params);
  369. logger.error("getTokenByRemote -> requestUrl " + requestUrl);
  370. OkHttpClient client = new OkHttpClient().newBuilder()
  371. .build();
  372. Request request = new Request.Builder()
  373. .url(requestUrl)
  374. .get()
  375. .build();
  376. response = client.newCall(request).execute();
  377. String string = response.body().string();
  378. ObjectMapper objectMapper = new ObjectMapper();
  379. result = objectMapper.readValue(string, Map.class);
  380. logger.error("getTokenByRemote -> result " + result);
  381. } catch (IOException | BOSException e) {
  382. e.printStackTrace();
  383. throw new RuntimeException("远程获取IOT平台token失败: " + e.getMessage());
  384. }
  385. if (response.isSuccessful()) {
  386. String token = (String) result.get("token");
  387. //缓存token
  388. cache.put("token", token, 27000000);//6.5小时
  389. return token;
  390. } else {
  391. throw new RuntimeException((String) result.get("msg"));
  392. }
  393. }
  394. /**
  395. * 拼接地址参数
  396. */
  397. private String appendUrl(String url, Map<String, String> data) {
  398. StringBuilder paramStr = new StringBuilder();
  399. for (String key : data.keySet()) {
  400. paramStr.append(key).append("=").append(data.get(key)).append("&");
  401. }
  402. paramStr.deleteCharAt(paramStr.lastIndexOf("&"));
  403. if (!StringUtils.isEmpty(url)) {
  404. return url.contains("?") ? (url + "&" + paramStr) : (url + "?" + paramStr);
  405. }
  406. return paramStr.toString();
  407. }
  408. /**
  409. * 同步OA部门
  410. *
  411. * @param request
  412. * @param response
  413. * @param modelMap
  414. * @throws BOSException
  415. * @throws EASBizException
  416. */
  417. public void syncOrgUnitToOAAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws BOSException, EASBizException, ShrWebBizException {
  418. String billIds = request.getParameter("billIds");
  419. //同步组织到OA
  420. //Map map = SyncTranForOAFacadeFactory.getLocalInstance(ctx).syncOrgUnitToOA(billIds, null);
  421. try {
  422. IAdminOrgUnit iAdminOrgUnit = AdminOrgUnitFactory.getLocalInstance(ctx);
  423. String billds = request.getParameter("billIds");
  424. logger.error("_syncOrgUnitToOA---billds: " + billds);
  425. Set<String> adminOrgIds = null;
  426. if (StringUtils.isEmpty(billds)) {
  427. AdminOrgUnitCollection adminOrgUnitCollection = iAdminOrgUnit.getAdminOrgUnitCollection("select id ,name,number");
  428. StringBuilder sb = new StringBuilder();
  429. for (int i = 0; i < adminOrgUnitCollection.size(); i++) {
  430. String adminOrgId = adminOrgUnitCollection.get(i).getId().toString();
  431. sb.append(adminOrgId).append(",");
  432. }
  433. sb.deleteCharAt(sb.lastIndexOf(","));
  434. billds = sb.toString();
  435. }
  436. adminOrgIds = AtsUtil.toSet(billds);
  437. Map<String, List<Map<String, String>>> result = SyncTranForOAFacadeFactory.getLocalInstance(ctx).syncOrgUnitToOA(billIds, null);
  438. if (result != null && !result.isEmpty()) {
  439. logger.error("handleEnableWithTips----- start ");
  440. logger.error("handleEnableWithTips----- billId-- " + billIds);
  441. AdminOrgUnitCollection adminOrgUnitCollection = iAdminOrgUnit.getAdminOrgUnitCollection("select id,number where id in (" + AtsUtil.getStrFromString(billds) + ")");
  442. int sucess = 0;
  443. int failure = 0;
  444. BatchMessageTipsHeader batchMessageTipsHeader = new BatchMessageTipsHeader();
  445. for (int i = 0; i < adminOrgUnitCollection.size(); i++) {
  446. BatchMessageTipsBody body = new BatchMessageTipsBody();
  447. AdminOrgUnitInfo adminOrgUnitInfo = adminOrgUnitCollection.get(i);
  448. body.setId(adminOrgUnitInfo.getId().toString());
  449. String adminOrgNumber = adminOrgUnitInfo.getNumber();
  450. Map<String, String> map = (Map<String, String>) result.get(adminOrgNumber);
  451. logger.error("map----" + map);
  452. if (map == null) {
  453. ++failure;
  454. body.setMuitTipsState(Boolean.FALSE);
  455. body.setMuitTipsMessage("同步数据不能为空或检查是否同步OA字段是否等于否!");
  456. } else {
  457. if ("success".equals(map.get("state"))) {
  458. ++sucess;
  459. body.setMuitTipsState(Boolean.TRUE);
  460. body.setMuitTipsMessage(map.get("msg"));
  461. } else {
  462. ++failure;
  463. body.setMuitTipsState(Boolean.FALSE);
  464. body.setMuitTipsMessage(map.get("msg"));
  465. }
  466. }
  467. batchMessageTipsHeader.addResult(body);
  468. }
  469. logger.error("handleEnableWithTips----- >> ");
  470. batchMessageTipsHeader.setBillId(billds);
  471. batchMessageTipsHeader.setFailureCount(failure);
  472. batchMessageTipsHeader.setSuccessCount(sucess);
  473. logger.error("batchMessageTipsHeader " + batchMessageTipsHeader.getSuccessCount());
  474. request.setAttribute("res_method_data", batchMessageTipsHeader);
  475. this.writeSuccessData(batchMessageTipsHeader);
  476. logger.error("handleEnableWithTips----- end ");
  477. }
  478. } catch (SHRWebException e) {
  479. e.printStackTrace();
  480. throw new ShrWebBizException(e);
  481. }
  482. }
  483. }