GetQuerySpecialAmountFeedback.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package com.kingdee.eas.custom.shuiyou.six.osf;
  2. import cn.hutool.core.util.StrUtil;
  3. import cn.hutool.json.JSONArray;
  4. import cn.hutool.json.JSONObject;
  5. import cn.hutool.json.JSONUtil;
  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.metadata.entity.SelectorItemCollection;
  11. import com.kingdee.bos.metadata.entity.SelectorItemInfo;
  12. import com.kingdee.bos.rabbitmq.guava.Lists;
  13. import com.kingdee.bos.util.BOSUuid;
  14. import com.kingdee.eas.common.EASBizException;
  15. import com.kingdee.eas.custom.shuiyou.task.*;
  16. import com.kingdee.eas.custom.shuiyou.uitls.ISYUtilsFacade;
  17. import com.kingdee.eas.custom.shuiyou.uitls.SYUtilsFacadeFactory;
  18. import com.kingdee.eas.custom.shuiyou.uitls.URLConfigEnum;
  19. import com.kingdee.eas.util.app.DbUtil;
  20. import com.kingdee.jdbc.rowset.IRowSet;
  21. import java.util.List;
  22. import java.util.Map;
  23. /**
  24. * 人员专项附加扣除金额查询结果反馈
  25. * description: GetQuerySpecialAmountFeedback <br>
  26. * date: 2024/9/9 16:03 <br>
  27. * author: lhbj <br>
  28. * version: 1.0 <br>
  29. */
  30. public class GetQuerySpecialAmountFeedback implements IHRMsfService {
  31. @Override
  32. public Object process(Context context, Map map) throws EASBizException, BOSException {
  33. SelectorItemCollection sc = new SelectorItemCollection();
  34. sc.add(new SelectorItemInfo("state"));
  35. ITask iTask = TaskFactory.getLocalInstance(context);
  36. ISYUtilsFacade facade = SYUtilsFacadeFactory.getLocalInstance(context);
  37. //获取请求结果
  38. TaskInfo taskInfo=new TaskInfo();
  39. String paramData = (String) map.get("paramData");
  40. MessageResult messageResult=null;
  41. try {
  42. JSONObject paramMap = JSONUtil.parseObj(paramData);
  43. //获取传入任务id
  44. String preTaskId = (String) paramMap.get("parent_taskid");
  45. taskInfo.setId(BOSUuid.read(preTaskId));
  46. taskInfo.setState(TaskStateEnum.FINISHED);
  47. String initIds = (String) paramMap.get("initIds");
  48. Map<String, Object> config = facade.getConfig();
  49. String url = config.get("ip") + URLConfigEnum.QUERYPREDEDUCT_VALUE;
  50. String result = facade.get(url,paramData);
  51. //获取本次的数据id
  52. String taxIDS =initIds;
  53. StringBuilder sel = new StringBuilder();
  54. sel.append(" select tax.fid,stpr.FCARDNUMBER from ");
  55. sel.append(" T_HR_STAXCALINITDETAIL tax ");
  56. sel.append(" left join T_HR_STaxPersonRecord stpr on stpr.FPERSONID=tax.FPERSONID ");
  57. sel.append(" left join T_HR_STaxPersonRecordEntry stpre on stpre.FBILLID =stpr.fid ");
  58. sel.append(" where tax.FTAXUNITID=stpre.FTAXUNITID ");
  59. sel.append(" and tax.fid in (" + taxIDS + ")");
  60. IRowSet rs = DbUtil.executeQuery(context, sel.toString());
  61. Map<String,String> card_idMap=Maps.newHashMap();
  62. while (rs.next()) {
  63. String id = rs.getString("fid");
  64. String card = rs.getString("FCARDNUMBER");
  65. card_idMap.put(card,id);
  66. }
  67. JSONObject resultMap = JSONUtil.parseObj(result);
  68. JSONObject head = resultMap.getJSONObject("head");
  69. JSONObject body = resultMap.getJSONObject("body");
  70. String code = head.getStr("code");
  71. if ("00000000".equals(code)) {
  72. Map<String, List<String>> sql_param = Maps.newHashMap();
  73. JSONArray ryxxlb = body.getJSONArray("ryxxlb");
  74. for (int i = 0; i < ryxxlb.size(); i++) {
  75. JSONObject ryxx = ryxxlb.getJSONObject(i);
  76. StringBuilder sql = new StringBuilder();
  77. sql.append("update T_HR_STAXCALINITDETAIL set ");
  78. List<String> paramList = Lists.newArrayList();
  79. for (Map.Entry<String, Object> entry : ryxx.entrySet()) {
  80. String key = entry.getKey();
  81. Object value = entry.getValue();
  82. String field = this.getFieldByNumber(context, key);
  83. if (StrUtil.isNotBlank(field)) {
  84. paramList.add(StrUtil.toString(value));
  85. sql.append(field + "=?,");
  86. }
  87. }
  88. String zzhm = ryxx.getStr("zzhm");
  89. sql = sql.delete(sql.length() - 1, sql.length());
  90. sql.append(" where fid =?");
  91. paramList.add(card_idMap.get(zzhm));
  92. sql_param.put(sql.toString(), paramList);
  93. }
  94. for(Map.Entry<String,List<String>> entry : sql_param.entrySet()){
  95. String sql = entry.getKey();
  96. List<String> list = entry.getValue();
  97. DbUtil.execute(context,sql,list.toArray());
  98. }
  99. messageResult = MessageResult.SUCCESS(result);
  100. }else if("00000004".equals(head.getStr("code"))) {
  101. messageResult = MessageResult.AGAIN();
  102. }else {
  103. messageResult = MessageResult.FAILED();
  104. }
  105. }catch (Exception e){
  106. e.printStackTrace();
  107. taskInfo.setState(TaskStateEnum.FAIDED);
  108. messageResult = MessageResult.ERROR(e.getMessage());
  109. }finally {
  110. iTask.updatePartial(taskInfo, sc);
  111. }
  112. return messageResult;
  113. }
  114. protected String getFieldByNumber(Context context,String number){
  115. String sql = "select ('T'||FIELDSN) fieldName,fname_L2 from T_HR_STaxItem where FSIMPLENAME=?";
  116. try {
  117. IRowSet rs = DbUtil.executeQuery(context, sql, new String[]{number});
  118. if (rs.next()) {
  119. return rs.getString("fieldName");
  120. }
  121. }catch (Exception e){
  122. e.printStackTrace();
  123. }
  124. return null;
  125. }
  126. }