package com.kingdee.eas.custom.shuiyou.six.osf; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.google.common.collect.Maps; import com.kingdee.bos.BOSException; import com.kingdee.bos.Context; import com.kingdee.bos.bsf.service.app.IHRMsfService; import com.kingdee.bos.metadata.entity.SelectorItemCollection; import com.kingdee.bos.metadata.entity.SelectorItemInfo; import com.kingdee.bos.rabbitmq.guava.Lists; import com.kingdee.bos.util.BOSUuid; import com.kingdee.eas.common.EASBizException; import com.kingdee.eas.custom.shuiyou.RequestStateEnum; import com.kingdee.eas.custom.shuiyou.task.*; import com.kingdee.eas.custom.shuiyou.uitls.ISYUtilsFacade; import com.kingdee.eas.custom.shuiyou.uitls.SYUtilsFacadeFactory; import com.kingdee.eas.custom.shuiyou.uitls.URLConfigEnum; import com.kingdee.eas.util.app.DbUtil; import com.kingdee.jdbc.rowset.IRowSet; import com.kingdee.shr.compensation.app.tax.ITaxSpeAddDedRecord; import com.kingdee.shr.compensation.app.tax.TaxSpeAddDedRecordCollection; import com.kingdee.shr.compensation.app.tax.TaxSpeAddDedRecordFactory; import com.kingdee.shr.compensation.app.tax.TaxSpeAddDedRecordInfo; import com.kingdee.shr.compensation.app.taxCal.TaxCalInitDetailStateEnum; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 人员专项附加扣除金额查询结果反馈 * description: GetQuerySpecialAmountFeedback
* date: 2024/9/9 16:03
* author: lhbj
* version: 1.0
*/ public class GetQuerySpecialAmountFeedback implements IHRMsfService { @Override public Object process(Context context, Map map) throws EASBizException, BOSException { SelectorItemCollection sc = new SelectorItemCollection(); sc.add(new SelectorItemInfo("state")); sc.add(new SelectorItemInfo("executionStatus")); sc.add(new SelectorItemInfo("requestState")); sc.add(new SelectorItemInfo("requestType")); ITask iTask = TaskFactory.getLocalInstance(context); ISYUtilsFacade facade = SYUtilsFacadeFactory.getLocalInstance(context); //获取请求结果 TaskInfo taskInfo=null; String preTaskId =null; String paramData = (String) map.get("paramData"); String this_taskId = (String) map.get("this_taskId"); MessageResult messageResult=null; try { JSONObject paramMap = JSONUtil.parseObj(paramData); //获取传入任务id preTaskId = (String) paramMap.get("parent_taskid"); String initIds = (String) paramMap.get("initIds"); Map config = facade.getConfig(); String url = config.get("ip") + URLConfigEnum.GETQUERYSPECIALAMOUNTFEEDBACK_VALUE; String result = facade.get(url,paramData); //获取本次的数据id String taxIDS =initIds; StringBuilder sel = new StringBuilder(); sel.append(" select tax.fid,stpr.FCARDNUMBER,tax.FCMPCALTABLEID from "); sel.append(" T_HR_STAXCALINITDETAIL tax "); sel.append(" left join T_HR_STaxPersonRecord stpr on stpr.FPERSONID=tax.FPERSONID "); sel.append(" left join T_HR_STaxPersonRecordEntry stpre on stpre.FBILLID =stpr.fid "); sel.append(" where tax.FTAXUNITID=stpre.FTAXUNITID "); sel.append(" and tax.fid in (" + taxIDS + ")"); IRowSet rs = DbUtil.executeQuery(context, sel.toString()); Map card_idMap=Maps.newHashMap(); Map cmp_idMap=Maps.newHashMap(); while (rs.next()) { String id = rs.getString("fid"); String card = rs.getString("FCARDNUMBER"); String cmpID = rs.getString("FCMPCALTABLEID"); card_idMap.put(card,id); cmp_idMap.put(card,cmpID); } JSONObject resultMap = JSONUtil.parseObj(result); JSONObject head = resultMap.getJSONObject("head"); JSONObject body = resultMap.getJSONObject("body"); String code = head.getStr("code"); if ("00000000".equals(code)) { taskInfo= new TaskInfo(); taskInfo.setState(TaskStateEnum.FINISHED); taskInfo.setRequestState(RequestStateEnum.Successful); taskInfo.setExecutionStatus(ExecutionStatusEnum.success); taskInfo.setId(BOSUuid.read(preTaskId)); // ITaxSpeAddDedRecord itsadr = TaxSpeAddDedRecordFactory.getLocalInstance(context); // TaxSpeAddDedRecordCollection taxSpeAddDedRecordCollection = itsadr.getTaxSpeAddDedRecordCollection("task.id='"+this_taskId+"'"); // SelectorItemCollection sictd = new SelectorItemCollection(); // sictd.add(new SelectorItemInfo("state")); // for(int i=0;null!=taxSpeAddDedRecordCollection && i> sql_param = Maps.newHashMap(); JSONArray ryxxlb = body.getJSONArray("ryxxlb"); for (int i = 0; i < ryxxlb.size(); i++) { JSONObject ryxx = ryxxlb.getJSONObject(i); StringBuilder sqlr = new StringBuilder(); sqlr.append("update T_HR_STAXCALCONFIGDETAIL set "); StringBuilder sql = new StringBuilder(); sql.append("update T_HR_STAXCALINITDETAIL set "); List paramList = Lists.newArrayList(); for (Map.Entry entry : ryxx.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); String field = this.getFieldByNumber(context, key); if (StrUtil.isNotBlank(field)) { paramList.add(StrUtil.toString(value)); sql.append(field + "=?,"); sqlr.append(field + "=?,"); } } String zzhm = ryxx.getStr("zzhm"); sql.delete(sql.length() - 1, sql.length()); String fid = card_idMap.get(zzhm); sql.append(" where fid ='").append(fid).append("'"); sqlr.delete(sqlr.length() - 1, sqlr.length()); sqlr.append(" where FCMPCALTABLEID =?"); //更新确认表 //List paramListR = new ArrayList<>(); //paramListR.addAll(paramList); sql_param.put(sql.toString(), paramList); //paramListR.add(cmp_idMap.get(zzhm)); //sql_param.put(sqlr.toString(), paramListR); } System.out.println("sql_param:"+sql_param); for(Map.Entry> entry : sql_param.entrySet()){ String sql = entry.getKey(); List list = entry.getValue(); DbUtil.execute(context,sql,list.toArray()); } messageResult = MessageResult.SUCCESS(result); }else if("000004".equals(head.getStr("code"))) { messageResult = MessageResult.AGAIN("进行中,请稍后"); }else { messageResult = MessageResult.FAILED(result); } }catch (Exception e){ e.printStackTrace(); if(StringUtils.isNotBlank(preTaskId)) { taskInfo = new TaskInfo(); taskInfo.setState(TaskStateEnum.FINISHED); taskInfo.setId(BOSUuid.read(preTaskId)); } messageResult = MessageResult.ERROR(e.getMessage()); }finally { if(null!=taskInfo) { iTask.updatePartial(taskInfo, sc); } } return messageResult; } protected String getFieldByNumber(Context context,String number){ String sql = "select ('T'||FIELDSN) fieldName,fname_L2 from T_HR_STaxItem where FSIMPLENAME=?"; try { IRowSet rs = DbUtil.executeQuery(context, sql, new String[]{number}); if (rs.next()) { return rs.getString("fieldName"); } }catch (Exception e){ e.printStackTrace(); } return null; } }