GetQuerySpecialAmountFeedback.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  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.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.compensation.app.tax.ITaxSpeAddDedRecord;
  23. import com.kingdee.shr.compensation.app.tax.TaxSpeAddDedRecordCollection;
  24. import com.kingdee.shr.compensation.app.tax.TaxSpeAddDedRecordFactory;
  25. import com.kingdee.shr.compensation.app.tax.TaxSpeAddDedRecordInfo;
  26. import com.kingdee.shr.compensation.app.taxCal.TaxCalInitDetailStateEnum;
  27. import org.apache.commons.lang3.StringUtils;
  28. import java.util.ArrayList;
  29. import java.util.List;
  30. import java.util.Map;
  31. /**
  32. * 人员专项附加扣除金额查询结果反馈
  33. * description: GetQuerySpecialAmountFeedback <br>
  34. * date: 2024/9/9 16:03 <br>
  35. * author: lhbj <br>
  36. * version: 1.0 <br>
  37. */
  38. public class GetQuerySpecialAmountFeedback implements IHRMsfService {
  39. @Override
  40. public Object process(Context context, Map map) throws EASBizException, BOSException {
  41. SelectorItemCollection sc = new SelectorItemCollection();
  42. sc.add(new SelectorItemInfo("state"));
  43. sc.add(new SelectorItemInfo("executionStatus"));
  44. sc.add(new SelectorItemInfo("requestState"));
  45. sc.add(new SelectorItemInfo("requestType"));
  46. ITask iTask = TaskFactory.getLocalInstance(context);
  47. ISYUtilsFacade facade = SYUtilsFacadeFactory.getLocalInstance(context);
  48. //获取请求结果
  49. TaskInfo taskInfo=null;
  50. String preTaskId =null;
  51. String paramData = (String) map.get("paramData");
  52. String this_taskId = (String) map.get("this_taskId");
  53. MessageResult messageResult=null;
  54. try {
  55. JSONObject paramMap = JSONUtil.parseObj(paramData);
  56. //获取传入任务id
  57. preTaskId = (String) paramMap.get("parent_taskid");
  58. String initIds = (String) paramMap.get("initIds");
  59. Map<String, Object> config = facade.getConfig();
  60. String url = config.get("ip") + URLConfigEnum.GETQUERYSPECIALAMOUNTFEEDBACK_VALUE;
  61. paramMap.remove("initIds");
  62. String result = facade.get(url,JSONUtil.toJsonStr(paramMap));
  63. //获取本次的数据id
  64. String taxIDS =initIds;
  65. StringBuilder sel = new StringBuilder();
  66. sel.append(" select tax.fid,stpr.FCARDNUMBER,tax.FCMPCALTABLEID from ");
  67. sel.append(" T_HR_STAXCALINITDETAIL tax ");
  68. sel.append(" left join T_HR_STaxPersonRecord stpr on stpr.FPERSONID=tax.FPERSONID ");
  69. sel.append(" left join T_HR_STaxPersonRecordEntry stpre on stpre.FBILLID =stpr.fid ");
  70. sel.append(" where tax.FTAXUNITID=stpre.FTAXUNITID ");
  71. sel.append(" and tax.fid in (" + taxIDS + ")");
  72. IRowSet rs = DbUtil.executeQuery(context, sel.toString());
  73. Map<String,String> card_idMap=Maps.newHashMap();
  74. Map<String,String> cmp_idMap=Maps.newHashMap();
  75. while (rs.next()) {
  76. String id = rs.getString("fid");
  77. String card = rs.getString("FCARDNUMBER");
  78. String cmpID = rs.getString("FCMPCALTABLEID");
  79. card_idMap.put(card,id);
  80. cmp_idMap.put(card,cmpID);
  81. }
  82. JSONObject resultMap = JSONUtil.parseObj(result);
  83. JSONObject head = resultMap.getJSONObject("head");
  84. JSONObject body = resultMap.getJSONObject("body");
  85. String code = head.getStr("code");
  86. if ("00000000".equals(code)) {
  87. taskInfo= new TaskInfo();
  88. taskInfo.setState(TaskStateEnum.FINISHED);
  89. taskInfo.setRequestState(RequestStateEnum.Successful);
  90. taskInfo.setExecutionStatus(ExecutionStatusEnum.success);
  91. taskInfo.setId(BOSUuid.read(preTaskId));
  92. // ITaxSpeAddDedRecord itsadr = TaxSpeAddDedRecordFactory.getLocalInstance(context);
  93. // TaxSpeAddDedRecordCollection taxSpeAddDedRecordCollection = itsadr.getTaxSpeAddDedRecordCollection("task.id='"+this_taskId+"'");
  94. // SelectorItemCollection sictd = new SelectorItemCollection();
  95. // sictd.add(new SelectorItemInfo("state"));
  96. // for(int i=0;null!=taxSpeAddDedRecordCollection && i<taxSpeAddDedRecordCollection.size();i++){
  97. // TaxSpeAddDedRecordInfo taxSpeAddDedRecordInfo = taxSpeAddDedRecordCollection.get(i);
  98. // taxSpeAddDedRecordInfo.setState(TaxCalInitDetailStateEnum.FINISHED);
  99. // itsadr.updatePartial(taxSpeAddDedRecordInfo,sictd);
  100. // }
  101. Map<String, List<String>> sql_param = Maps.newHashMap();
  102. JSONArray ryxxlb = body.getJSONArray("ryxxlb");
  103. for (int i = 0; i < ryxxlb.size(); i++) {
  104. JSONObject ryxx = ryxxlb.getJSONObject(i);
  105. StringBuilder sqlr = new StringBuilder();
  106. sqlr.append("update T_HR_STAXCALCONFIGDETAIL set ");
  107. StringBuilder sql = new StringBuilder();
  108. sql.append("update T_HR_STAXCALINITDETAIL set ");
  109. List<String> paramList = Lists.newArrayList();
  110. for (Map.Entry<String, Object> entry : ryxx.entrySet()) {
  111. String key = entry.getKey();
  112. Object value = entry.getValue();
  113. String field = this.getFieldByNumber(context, key);
  114. if (StrUtil.isNotBlank(field)) {
  115. paramList.add(StrUtil.toString(value));
  116. sql.append(field + "=?,");
  117. sqlr.append(field + "=?,");
  118. }
  119. }
  120. String zzhm = ryxx.getStr("zzhm");
  121. sql.delete(sql.length() - 1, sql.length());
  122. String fid = card_idMap.get(zzhm);
  123. sql.append(" where fid ='").append(fid).append("'");
  124. sqlr.delete(sqlr.length() - 1, sqlr.length());
  125. sqlr.append(" where FCMPCALTABLEID =?");
  126. //更新确认表
  127. //List<String> paramListR = new ArrayList<>();
  128. //paramListR.addAll(paramList);
  129. sql_param.put(sql.toString(), paramList);
  130. //paramListR.add(cmp_idMap.get(zzhm));
  131. //sql_param.put(sqlr.toString(), paramListR);
  132. }
  133. System.out.println("sql_param:"+sql_param);
  134. for(Map.Entry<String,List<String>> entry : sql_param.entrySet()){
  135. String sql = entry.getKey();
  136. List<String> list = entry.getValue();
  137. DbUtil.execute(context,sql,list.toArray());
  138. }
  139. messageResult = MessageResult.SUCCESS(result);
  140. }else if("000004".equals(head.getStr("code"))) {
  141. messageResult = MessageResult.AGAIN("进行中,请稍后");
  142. }else {
  143. messageResult = MessageResult.FAILED(result);
  144. }
  145. }catch (Exception e){
  146. e.printStackTrace();
  147. if(StringUtils.isNotBlank(preTaskId)) {
  148. taskInfo = new TaskInfo();
  149. taskInfo.setState(TaskStateEnum.FINISHED);
  150. taskInfo.setId(BOSUuid.read(preTaskId));
  151. }
  152. messageResult = MessageResult.ERROR(e.getMessage());
  153. }finally {
  154. if(null!=taskInfo) {
  155. iTask.updatePartial(taskInfo, sc);
  156. }
  157. }
  158. return messageResult;
  159. }
  160. protected String getFieldByNumber(Context context,String number){
  161. String sql = "select ('T'||FIELDSN) fieldName,fname_L2 from T_HR_STaxItem where FSIMPLENAME=?";
  162. try {
  163. IRowSet rs = DbUtil.executeQuery(context, sql, new String[]{number});
  164. if (rs.next()) {
  165. return rs.getString("fieldName");
  166. }
  167. }catch (Exception e){
  168. e.printStackTrace();
  169. }
  170. return null;
  171. }
  172. }