diff --git a/src/com/engine/salary/remote/cbs8/response/GetDtaResponse.java b/src/com/engine/salary/remote/cbs8/response/GetDtaResponse.java index c2c92c61c..e2587a9b4 100644 --- a/src/com/engine/salary/remote/cbs8/response/GetDtaResponse.java +++ b/src/com/engine/salary/remote/cbs8/response/GetDtaResponse.java @@ -16,7 +16,7 @@ public class GetDtaResponse extends CBS8BaseResponse { private Body data; @Data - public static class Body { + public static class Body extends CBS8PageInfo{ /** * 明细列表 */ diff --git a/src/com/engine/salary/timer/SyncCBSAccountDetailsJob.java b/src/com/engine/salary/timer/SyncCBSAccountDetailsJob.java index 52825832c..5d7abfa35 100644 --- a/src/com/engine/salary/timer/SyncCBSAccountDetailsJob.java +++ b/src/com/engine/salary/timer/SyncCBSAccountDetailsJob.java @@ -71,9 +71,6 @@ public class SyncCBSAccountDetailsJob extends BaseCronJob { user.setLoginid("sysadmin"); try { - AccountManagementClient accountManagementClient = new AccountManagementClient(); - - GetTransactionDetailRequest requestParam = new GetTransactionDetailRequest(); requestParam.setCurrentPage(1); requestParam.setPageSize(1000); @@ -92,12 +89,15 @@ public class SyncCBSAccountDetailsJob extends BaseCronJob { if (StrUtil.isNotBlank(paymentNatureList)) { requestParam.setPaymentNatureList(Arrays.stream(paymentNatureList.split(",")).collect(Collectors.toList())); } - GetTransactionDetailResponse getTransactionDetailResponse = accountManagementClient.transactionDetailQuery(requestParam); - List list = getTransactionDetailResponse.getData().getList(); + + //查询前1000条数据 + AccountManagementClient accountManagementClient = new AccountManagementClient(); + GetTransactionDetailResponse response = accountManagementClient.transactionDetailQuery(requestParam); + List list = response.getData().getList(); //判断是否还存在数据,递归查询 - boolean hasNextPage = getTransactionDetailResponse.getData().isHasNextPage(); - int nextPage = getTransactionDetailResponse.getData().getNextPage(); + boolean hasNextPage = response.getData().isHasNextPage(); + int nextPage = response.getData().getNextPage(); while (hasNextPage) { requestParam.setCurrentPage(nextPage); GetTransactionDetailResponse nextPageResponse = accountManagementClient.transactionDetailQuery(requestParam); diff --git a/src/com/engine/salary/timer/SyncCBSPayDetailsJob.java b/src/com/engine/salary/timer/SyncCBSPayDetailsJob.java index 40aaf4fa0..b33978318 100644 --- a/src/com/engine/salary/timer/SyncCBSPayDetailsJob.java +++ b/src/com/engine/salary/timer/SyncCBSPayDetailsJob.java @@ -3,11 +3,14 @@ package com.engine.salary.timer; import cn.hutool.core.util.StrUtil; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.SQLMapper; +import com.engine.salary.mapper.cbs.UfHkrdzbMapper; import com.engine.salary.remote.cbs8.client.BillManagementClient; import com.engine.salary.remote.cbs8.config.EBS2ECConfig; +import com.engine.salary.remote.cbs8.po.UfHkrdzbPO; import com.engine.salary.remote.cbs8.request.GetDtaRequest; import com.engine.salary.remote.cbs8.response.GetDtaResponse; import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.security.AnyTypePermission; @@ -64,6 +67,10 @@ public class SyncCBSPayDetailsJob extends BaseCronJob { return MapperProxyFactory.getProxy(SQLMapper.class); } + private UfHkrdzbMapper getUfHkrdzbMapper() { + return MapperProxyFactory.getProxy(UfHkrdzbMapper.class); + } + @Override public void execute() { User user = new User(); @@ -93,10 +100,22 @@ public class SyncCBSPayDetailsJob extends BaseCronJob { requestParam.setHoldAccountList(Arrays.stream(holdAccountList.split(",")).collect(Collectors.toList())); requestParam.setBillVarietyList(Arrays.stream(billVarietyList.split(",")).collect(Collectors.toList())); + //查询前1000条数据 BillManagementClient bailManagementClient = new BillManagementClient(); - GetDtaResponse getDtaResponse = bailManagementClient.dtaQuery(requestParam); + GetDtaResponse response = bailManagementClient.dtaQuery(requestParam); + List list = response.getData().getList(); - List list = getDtaResponse.getData().getList(); + //判断是否还存在数据,递归查询 + boolean hasNextPage = response.getData().isHasNextPage(); + int nextPage = response.getData().getNextPage(); + while (hasNextPage) { + requestParam.setCurrentPage(nextPage); + GetDtaResponse nextPageResponse = bailManagementClient.dtaQuery(requestParam); + List pageData = nextPageResponse.getData().getList(); + list.addAll(pageData); + hasNextPage = nextPageResponse.getData().isHasNextPage(); + nextPage = nextPageResponse.getData().getNextPage(); + } //加载cbs配置 XStream xStream = new XStream(); @@ -118,6 +137,11 @@ public class SyncCBSPayDetailsJob extends BaseCronJob { String uniqueEbsKey = uniqueField.getEbsKey(); List uniqueDataKeys = getSQLMapper().listString(String.format("select %s from %s", uniqueKey, tableName)); + //获取汇款人与办事处的对照数据 + List ufHkrdzbPOS = getUfHkrdzbMapper().listAll(); + Map customerDepartmentMap = SalaryEntityUtil.convert2Map(ufHkrdzbPOS, UfHkrdzbPO::getKhmc, UfHkrdzbPO::getDepartmentId); + + for (GetDtaResponse.Detail detail : list) { Map detailMap = JsonUtil.parseMap(detail, String.class); String uniqueData = detailMap.get(uniqueEbsKey); @@ -136,8 +160,6 @@ public class SyncCBSPayDetailsJob extends BaseCronJob { add("modedatacreatertype"); add("modedatacreatedate"); add("modedatacreatetime"); - //业务逻辑字段,收款类型 - add("sklx"); }}; String currDate = TimeUtil.getCurrentDateString(); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); @@ -148,16 +170,50 @@ public class SyncCBSPayDetailsJob extends BaseCronJob { add(0); add(String.format("'%s'", currDate)); add(String.format("'%s'", currTime)); - //业务逻辑字段,收款类型,银承,商承 - add("AC01".equals(detailMap.get("billType")) ? 0 : 1); }}; + String hkr = ""; for (EBS2ECConfig.Table.Field field : table.getFields()) { //数据库字段 String fieldName = field.getKey(); fields.add(fieldName); // 接口值 - values.add(String.format("'%s'", detailMap.getOrDefault(field.getEbsKey(), ""))); + String value = detailMap.getOrDefault(field.getEbsKey(), ""); + values.add(String.format("'%s'", value)); + + //汇款人 + if ("hkr".equals(fieldName)) { + hkr = value; + } + } + + //业务逻辑字段,收款类型 + fields.add("sklx"); + values. add("AC01".equals(detailMap.get("billType")) ? 0 : 1); + + /* + * 认领逻辑, + * 根据汇款人去表里匹配【汇款人与办事处的对照表】 + * 如果能匹配到数据,则状态改为已自动认领,同时把办事处(部门)的值同步到办事处字段中,是否系统自动认领同步为是; + * 如对照标准无数据,则状态为:未认领; + */ + Integer departmentId = customerDepartmentMap.get(hkr); + if(departmentId!=null){ + //认领 + fields.add("zt"); + values.add(1); + + //是否系统认领 + fields.add("sfxtzdrl"); + values.add(1); + + //办事处 + fields.add("szbm"); + values.add(departmentId); + }else { + //未认领 + fields.add("zt"); + values.add(0); } String sql = String.format("insert into %s (%s) values (%s)", tableName, String.join(",", fields), values.stream().map(Object::toString).collect(Collectors.joining(",")));