123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- 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 <br>
- * date: 2024/9/9 16:03 <br>
- * author: lhbj <br>
- * version: 1.0 <br>
- */
- 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<String, Object> 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<String,String> card_idMap=Maps.newHashMap();
- Map<String,String> 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<taxSpeAddDedRecordCollection.size();i++){
- // TaxSpeAddDedRecordInfo taxSpeAddDedRecordInfo = taxSpeAddDedRecordCollection.get(i);
- // taxSpeAddDedRecordInfo.setState(TaxCalInitDetailStateEnum.FINISHED);
- // itsadr.updatePartial(taxSpeAddDedRecordInfo,sictd);
- // }
- Map<String, List<String>> 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<String> paramList = Lists.newArrayList();
- for (Map.Entry<String, Object> 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<String> 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<String,List<String>> entry : sql_param.entrySet()){
- String sql = entry.getKey();
- List<String> 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;
- }
- }
|