GetPensionDownloadFeedback.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. package com.kingdee.eas.custom.shuiyou.six.osf;
  2. import cn.hutool.json.JSONArray;
  3. import cn.hutool.json.JSONObject;
  4. import cn.hutool.json.JSONUtil;
  5. import com.google.common.collect.Lists;
  6. import com.google.common.collect.Maps;
  7. import com.kingdee.bos.BOSException;
  8. import com.kingdee.bos.Context;
  9. import com.kingdee.bos.bsf.service.app.IHRMsfService;
  10. import com.kingdee.bos.dao.ormapping.ObjectUuidPK;
  11. import com.kingdee.bos.metadata.entity.SelectorItemCollection;
  12. import com.kingdee.bos.metadata.entity.SelectorItemInfo;
  13. import com.kingdee.bos.util.BOSUuid;
  14. import com.kingdee.eas.common.EASBizException;
  15. import com.kingdee.eas.custom.shuiyou.RequestStateEnum;
  16. import com.kingdee.eas.custom.shuiyou.task.*;
  17. import com.kingdee.eas.custom.shuiyou.uitls.ISYUtilsFacade;
  18. import com.kingdee.eas.custom.shuiyou.uitls.SYUtilsFacadeFactory;
  19. import com.kingdee.eas.custom.shuiyou.uitls.URLConfigEnum;
  20. import com.kingdee.eas.util.app.DbUtil;
  21. import com.kingdee.jdbc.rowset.IRowSet;
  22. import com.kingdee.shr.dydeploy.web.executeSql.ExceptionUtils;
  23. import org.apache.commons.lang3.StringUtils;
  24. import java.util.List;
  25. import java.util.Map;
  26. /**
  27. * 养老金下载反馈
  28. * description: GetDownloadFeedback <br>
  29. * date: 2024/9/12 16:58 <br>
  30. * author: lhbj <br>
  31. * version: 1.0 <br>
  32. */
  33. public class GetPensionDownloadFeedback implements IHRMsfService {
  34. @Override
  35. public Object process(Context context, Map map) throws EASBizException, BOSException {
  36. SelectorItemCollection scs = new SelectorItemCollection();
  37. scs.add(new SelectorItemInfo("state"));
  38. scs.add(new SelectorItemInfo("executionStatus"));
  39. scs.add(new SelectorItemInfo("requestState"));
  40. scs.add(new SelectorItemInfo("requestType"));
  41. ITask iTask = TaskFactory.getLocalInstance(context);
  42. ISYUtilsFacade facade = SYUtilsFacadeFactory.getLocalInstance(context);
  43. //获取请求结果
  44. //获取请求结果
  45. TaskInfo taskInfo=null;
  46. String preTaskId=null;
  47. String paramData = (String) map.get("paramData");
  48. MessageResult messageResult = null;
  49. try {
  50. Map<String, Object> config = facade.getConfig();
  51. String url = config.get("ip") + URLConfigEnum.PENSIONDOWNLOADFEEDBACK_VALUE;
  52. JSONObject paramMap = JSONUtil.parseObj(paramData);
  53. //获取传入任务id
  54. preTaskId = (String) paramMap.get("parent_taskid");
  55. String initIds = (String) paramMap.get("initIds");
  56. //获取本次的数据id
  57. String taxIDS = initIds;
  58. StringBuilder sel = new StringBuilder();
  59. sel.append(" select tax.fid,stpr.FCARDNUMBER,tax.FCMPCALTABLEID from ");
  60. sel.append(" T_HR_STAXCALINITDETAIL tax ");
  61. sel.append(" left join T_HR_STaxPersonRecord stpr on stpr.FPERSONID=tax.FPERSONID ");
  62. sel.append(" left join T_HR_STaxPersonRecordEntry stpre on stpre.FBILLID =stpr.fid ");
  63. sel.append(" where tax.FTAXUNITID=stpre.FTAXUNITID ");
  64. sel.append(" and tax.fid in (" + taxIDS + ")");
  65. IRowSet rs = DbUtil.executeQuery(context, sel.toString());
  66. Map<String, String> card_idMap = Maps.newHashMap();
  67. Map<String,String> cmp_idMap=Maps.newHashMap();
  68. while (rs.next()) {
  69. String id = rs.getString("fid");
  70. String card = rs.getString("FCARDNUMBER");
  71. card_idMap.put(card, id);
  72. String cmpID = rs.getString("FCMPCALTABLEID");
  73. cmp_idMap.put(card,cmpID);
  74. }
  75. SelectorItemCollection sc = new SelectorItemCollection();
  76. sc.add(new SelectorItemInfo("id"));
  77. sc.add(new SelectorItemInfo("url"));
  78. sc.add(new SelectorItemInfo("requestId"));
  79. sc.add(new SelectorItemInfo("requestType"));
  80. sc.add(new SelectorItemInfo("requestParam.id"));
  81. sc.add(new SelectorItemInfo("requestParam.paramContent"));
  82. sc.add(new SelectorItemInfo("requestResult.id"));
  83. sc.add(new SelectorItemInfo("requestResult.resultContent"));
  84. sc.add(new SelectorItemInfo("requestState"));
  85. sc.add(new SelectorItemInfo("state"));
  86. sc.add(new SelectorItemInfo("name"));
  87. sc.add(new SelectorItemInfo("osfServiceName"));
  88. sc.add(new SelectorItemInfo("number"));
  89. sc.add(new SelectorItemInfo("taskPre.id"));
  90. sc.add(new SelectorItemInfo("taskPre.state"));
  91. sc.add(new SelectorItemInfo("taskPre.requestState"));
  92. taskInfo = iTask.getTaskInfo(new ObjectUuidPK(preTaskId), sc);
  93. int pageNo = 1;
  94. int pageSize = 4999;
  95. boolean next = false;
  96. StringBuilder updateljgryljr = new StringBuilder();
  97. updateljgryljr.append("update T_HR_STAXCALCONFIGDETAIL set T46 =? where fid=?");
  98. StringBuilder updateljgrylj = new StringBuilder();
  99. updateljgrylj.append("update T_HR_STAXCALINITDETAIL set T46 =? where FCMPCALTABLEID=?");
  100. List<String[]> list = Lists.newArrayList();
  101. List<String[]> listR = Lists.newArrayList();
  102. String result = facade.get(url, paramData);
  103. JSONObject resultMap = JSONUtil.parseObj(result);
  104. JSONObject head = resultMap.getJSONObject("head");
  105. JSONArray body = resultMap.getJSONArray("body");
  106. String code = head.getStr("code");
  107. if ("00000000".equals(code)) {
  108. taskInfo.setState(TaskStateEnum.FINISHED);
  109. taskInfo.setRequestState(RequestStateEnum.Successful);
  110. taskInfo.setExecutionStatus(ExecutionStatusEnum.success);
  111. taskInfo.setId(BOSUuid.read(preTaskId));
  112. for(int j =0; j<body.size();j++) {
  113. JSONObject bod = body.getJSONObject(j);
  114. JSONArray ljjg = bod.getJSONArray("ljjg");
  115. //遍历明细数据
  116. for (int i = 0; i < ljjg.size(); i++) {
  117. JSONObject sfn = ljjg.getJSONObject(i);
  118. String zzhm = sfn.getStr("zzhm");
  119. String ljgrylj = sfn.getStr("ljgrylj");
  120. String[] par = new String[2];
  121. par[1] = card_idMap.get(zzhm);
  122. par[0] = ljgrylj;
  123. list.add(par);
  124. String[] parr = new String[2];
  125. parr[1] = cmp_idMap.get(zzhm);
  126. parr[0] = ljgrylj;
  127. listR.add(parr);
  128. }
  129. }
  130. DbUtil.executeBatch(context, updateljgrylj.toString(), list);
  131. //DbUtil.executeBatch(context, updateljgryljr.toString(), list);
  132. System.out.println(this.getClass().toString()+"result");
  133. messageResult = MessageResult.SUCCESS(result);
  134. } else if ("000004".equals(head.getStr("code"))) {
  135. messageResult = MessageResult.AGAIN("进行中,请稍后");
  136. } else {
  137. messageResult = MessageResult.FAILED(result);
  138. }
  139. } catch (Exception e) {
  140. e.printStackTrace();
  141. messageResult = MessageResult.ERROR(ExceptionUtils.getStackTrace(e));
  142. if(StringUtils.isNotBlank(preTaskId)) {
  143. taskInfo = new TaskInfo();
  144. taskInfo.setState(TaskStateEnum.FINISHED);
  145. taskInfo.setId(BOSUuid.read(preTaskId));
  146. }
  147. }finally {
  148. if(null!=taskInfo) {
  149. iTask.updatePartial(taskInfo, scs);
  150. }
  151. }
  152. return messageResult;
  153. }
  154. /**
  155. * 查询项目
  156. *
  157. * @param context
  158. * @param number
  159. * @return
  160. */
  161. protected String getFieldByNumber(Context context, String number) {
  162. String sql = "select ('T'||FIELDSN) fieldName,fname_L2 from T_HR_STaxItem where FSIMPLENAME=?";
  163. try {
  164. IRowSet rs = DbUtil.executeQuery(context, sql, new String[]{number});
  165. if (rs.next()) {
  166. return rs.getString("fieldName");
  167. }
  168. } catch (Exception e) {
  169. e.printStackTrace();
  170. }
  171. return null;
  172. }
  173. }