From 28b5ee71f6a76fa991ebc7c8a873fdea63728a60 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com>
Date: Mon, 3 Mar 2025 17:38:28 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B1=87=E6=AC=BE=E4=BA=BA=E4=B8=8E=E5=8A=9E?=
=?UTF-8?q?=E4=BA=8B=E5=A4=84=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
resource/WEB-INF/CBS2ECConfig.xml | 4 +-
.../salary/mapper/cbs/UfHkrdzbMapper.java | 57 ++++
.../salary/mapper/cbs/UfHkrdzbMapper.xml | 322 ++++++++++++++++++
.../cbs8/client/AccountManagementClient.java | 1 +
.../salary/remote/cbs8/po/UfHkrdzbPO.java | 55 +++
.../remote/cbs8/response/CBS8PageInfo.java | 77 +++++
.../GetTransactionDetailResponse.java | 3 +-
.../timer/SyncCBSAccountDetailsJob.java | 57 +++-
8 files changed, 568 insertions(+), 8 deletions(-)
create mode 100644 src/com/engine/salary/mapper/cbs/UfHkrdzbMapper.java
create mode 100644 src/com/engine/salary/mapper/cbs/UfHkrdzbMapper.xml
create mode 100644 src/com/engine/salary/remote/cbs8/po/UfHkrdzbPO.java
create mode 100644 src/com/engine/salary/remote/cbs8/response/CBS8PageInfo.java
diff --git a/resource/WEB-INF/CBS2ECConfig.xml b/resource/WEB-INF/CBS2ECConfig.xml
index 563605ccb..c8af3283c 100644
--- a/resource/WEB-INF/CBS2ECConfig.xml
+++ b/resource/WEB-INF/CBS2ECConfig.xml
@@ -5,8 +5,8 @@
diff --git a/src/com/engine/salary/mapper/cbs/UfHkrdzbMapper.java b/src/com/engine/salary/mapper/cbs/UfHkrdzbMapper.java
new file mode 100644
index 000000000..cfe5e56a6
--- /dev/null
+++ b/src/com/engine/salary/mapper/cbs/UfHkrdzbMapper.java
@@ -0,0 +1,57 @@
+package com.engine.salary.mapper.cbs;
+
+import com.engine.salary.remote.cbs8.po.UfHkrdzbPO;
+
+import java.util.List;
+
+public interface UfHkrdzbMapper {
+
+ /**
+ * 鏌ヨ鎵鏈夎褰
+ *
+ * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List
+ */
+ List listAll();
+
+ /**
+ * 鏉′欢鏌ヨ
+ *
+ * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List
+ */
+ List listSome(UfHkrdzbPO ufHkrdzb);
+
+
+ /**
+ * 鏍规嵁涓婚敭鏌ヨ
+ *
+ * @param id 涓婚敭
+ * @return 杩斿洖璁板綍锛屾病鏈夎繑鍥瀗ull
+ */
+ UfHkrdzbPO getById(Integer id);
+
+ /**
+ * 鏂板锛屽拷鐣ull瀛楁
+ *
+ * @param ufHkrdzb 鏂板鐨勮褰
+ * @return 杩斿洖褰卞搷琛屾暟
+ */
+ int insertIgnoreNull(UfHkrdzbPO ufHkrdzb);
+
+ /**
+ * 淇敼锛屼慨鏀规墍鏈夊瓧娈
+ *
+ * @param ufHkrdzb 淇敼鐨勮褰
+ * @return 杩斿洖褰卞搷琛屾暟
+ */
+ int update(UfHkrdzbPO ufHkrdzb);
+
+ /**
+ * 淇敼锛屽拷鐣ull瀛楁
+ *
+ * @param ufHkrdzb 淇敼鐨勮褰
+ * @return 杩斿洖褰卞搷琛屾暟
+ */
+ int updateIgnoreNull(UfHkrdzbPO ufHkrdzb);
+
+
+}
\ No newline at end of file
diff --git a/src/com/engine/salary/mapper/cbs/UfHkrdzbMapper.xml b/src/com/engine/salary/mapper/cbs/UfHkrdzbMapper.xml
new file mode 100644
index 000000000..7380ec2c5
--- /dev/null
+++ b/src/com/engine/salary/mapper/cbs/UfHkrdzbMapper.xml
@@ -0,0 +1,322 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t
+ .
+ id
+ , t.requestId
+ , t.formmodeid
+ , t.modedatacreater
+ , t.modedatacreatertype
+ , t.modedatacreatedate
+ , t.modedatacreatetime
+ , t.MODEUUID
+ , t.form_biz_id
+ , t.gsbm
+ , t.khbm
+ , t.khmc
+ , t.bmbm
+ , t.bmd
+ , t.bm
+ , t.modedatamodifier
+ , t.modedatamodifydatetime
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO uf_hkrdzb
+
+
+
+ requestId,
+
+
+ formmodeid,
+
+
+ modedatacreater,
+
+
+ modedatacreatertype,
+
+
+ modedatacreatedate,
+
+
+ modedatacreatetime,
+
+
+ MODEUUID,
+
+
+ form_biz_id,
+
+
+ gsbm,
+
+
+ khbm,
+
+
+ khmc,
+
+
+ bmbm,
+
+
+ bmd,
+
+
+ bm,
+
+
+ modedatamodifier,
+
+
+ modedatamodifydatetime,
+
+
+
+
+ #{requestId},
+
+
+ #{formmodeid},
+
+
+ #{modedatacreater},
+
+
+ #{modedatacreatertype},
+
+
+ #{modedatacreatedate},
+
+
+ #{modedatacreatetime},
+
+
+ #{modeuuid},
+
+
+ #{formBizId},
+
+
+ #{gsbm},
+
+
+ #{khbm},
+
+
+ #{khmc},
+
+
+ #{bmbm},
+
+
+ #{bmd},
+
+
+ #{bm},
+
+
+ #{modedatamodifier},
+
+
+ #{modedatamodifydatetime},
+
+
+
+
+
+
+
+
+ UPDATE uf_hkrdzb
+
+ requestId=#{requestId},
+ formmodeid=#{formmodeid},
+ modedatacreater=#{modedatacreater},
+ modedatacreatertype=#{modedatacreatertype},
+ modedatacreatedate=#{modedatacreatedate},
+ modedatacreatetime=#{modedatacreatetime},
+ MODEUUID=#{modeuuid},
+ form_biz_id=#{formBizId},
+ gsbm=#{gsbm},
+ khbm=#{khbm},
+ khmc=#{khmc},
+ bmbm=#{bmbm},
+ bmd=#{bmd},
+ bm=#{bm},
+ modedatamodifier=#{modedatamodifier},
+ modedatamodifydatetime=#{modedatamodifydatetime},
+
+ WHERE id = #{id}
+
+
+
+
+
+ UPDATE uf_hkrdzb
+
+
+ requestId=#{requestId},
+
+
+ formmodeid=#{formmodeid},
+
+
+ modedatacreater=#{modedatacreater},
+
+
+ modedatacreatertype=#{modedatacreatertype},
+
+
+ modedatacreatedate=#{modedatacreatedate},
+
+
+ modedatacreatetime=#{modedatacreatetime},
+
+
+ MODEUUID=#{modeuuid},
+
+
+ form_biz_id=#{formBizId},
+
+
+ gsbm=#{gsbm},
+
+
+ khbm=#{khbm},
+
+
+ khmc=#{khmc},
+
+
+ bmbm=#{bmbm},
+
+
+ bmd=#{bmd},
+
+
+ bm=#{bm},
+
+
+ modedatamodifier=#{modedatamodifier},
+
+
+ modedatamodifydatetime=#{modedatamodifydatetime},
+
+
+ WHERE id = #{id}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/com/engine/salary/remote/cbs8/client/AccountManagementClient.java b/src/com/engine/salary/remote/cbs8/client/AccountManagementClient.java
index 40041bc9c..484cd8612 100644
--- a/src/com/engine/salary/remote/cbs8/client/AccountManagementClient.java
+++ b/src/com/engine/salary/remote/cbs8/client/AccountManagementClient.java
@@ -50,6 +50,7 @@ public class AccountManagementClient extends CBS8BaseClient {
return getTransactionDetailResponse;
} catch (IOException ignored) {
+ log.error("缃戠粶杩炴帴澶辫触鎴栬秴鏃讹紒",ignored);
throw new SalaryRunTimeException("缃戠粶杩炴帴澶辫触鎴栬秴鏃讹紒");
} finally {
client.close();
diff --git a/src/com/engine/salary/remote/cbs8/po/UfHkrdzbPO.java b/src/com/engine/salary/remote/cbs8/po/UfHkrdzbPO.java
new file mode 100644
index 000000000..4d3de9bdd
--- /dev/null
+++ b/src/com/engine/salary/remote/cbs8/po/UfHkrdzbPO.java
@@ -0,0 +1,55 @@
+package com.engine.salary.remote.cbs8.po;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Collection;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UfHkrdzbPO {
+ private Integer id;
+
+ private Integer requestId;
+
+ private Integer formmodeid;
+
+ private Integer modedatacreater;
+
+ private Integer modedatacreatertype;
+
+ private String modedatacreatedate;
+
+ private String modedatacreatetime;
+
+ private String modeuuid;
+
+ private String formBizId;
+
+ private String gsbm;
+
+ private String khbm;
+
+ private String khmc;
+
+ private String bmbm;
+
+ private Integer bmd;
+
+ private Integer bm;
+
+ private Integer modedatamodifier;
+
+ private String modedatamodifydatetime;
+
+
+ private Collection ids;
+
+ private Integer departmentId;
+
+}
\ No newline at end of file
diff --git a/src/com/engine/salary/remote/cbs8/response/CBS8PageInfo.java b/src/com/engine/salary/remote/cbs8/response/CBS8PageInfo.java
new file mode 100644
index 000000000..2ae5c7e7e
--- /dev/null
+++ b/src/com/engine/salary/remote/cbs8/response/CBS8PageInfo.java
@@ -0,0 +1,77 @@
+package com.engine.salary.remote.cbs8.response;
+
+import lombok.Data;
+
+
+@Data
+public class CBS8PageInfo {
+ /**
+ * 褰撳墠椤
+ */
+ private int pageNum;
+ /**
+ * 姣忛〉鐨勬暟閲
+ */
+ private int pageSize;
+ /**
+ * 褰撳墠椤电殑鏁伴噺
+ */
+ private int size;
+ /**
+ * 鎬婚〉鏁
+ */
+ private int pages;
+ /**
+ * 涓婁竴椤
+ */
+ private int prePage;
+ /**
+ * 涓嬩竴椤
+ */
+ private int nextPage;
+ /**
+ * 鎬昏褰曟暟
+ */
+ private long total;
+ /**
+ * 褰撳墠椤甸潰绗竴涓厓绱犲湪鏁版嵁搴撲腑鐨勮鍙
+ */
+ private int startRow;
+ /**
+ * 褰撳墠椤甸潰鏈鍚庝竴涓厓绱犲湪鏁版嵁搴撲腑鐨勮鍙
+ */
+ private int endRow;
+ /**
+ * 鏄惁涓虹涓椤
+ */
+ private boolean isFirstPage;
+ /**
+ * 鏄惁涓烘渶鍚庝竴椤
+ */
+ private boolean isLastPage;
+ /**
+ * 鏄惁鏈夊墠涓椤
+ */
+ private boolean hasPreviousPage;
+ /**
+ * 鏄惁鏈変笅涓椤
+ */
+ private boolean hasNextPage;
+ /**
+ * 瀵艰埅椤电爜鏁
+ */
+ private int navigatePages;
+ /**
+ * 鎵鏈夊鑸〉鍙
+ */
+ private int[] navigatepageNums;
+ /**
+ * 瀵艰埅鏉′笂鐨勭涓椤
+ */
+ private int navigateFirstPage;
+ /**
+ * 瀵艰埅鏉′笂鐨勬渶鍚庝竴椤
+ */
+ private int navigateLastPage;
+
+}
diff --git a/src/com/engine/salary/remote/cbs8/response/GetTransactionDetailResponse.java b/src/com/engine/salary/remote/cbs8/response/GetTransactionDetailResponse.java
index 6e6648a8c..61b2f5ddb 100644
--- a/src/com/engine/salary/remote/cbs8/response/GetTransactionDetailResponse.java
+++ b/src/com/engine/salary/remote/cbs8/response/GetTransactionDetailResponse.java
@@ -17,7 +17,8 @@ public class GetTransactionDetailResponse extends CBS8BaseResponse {
private Body data;
@Data
- public static class Body {
+ @EqualsAndHashCode(callSuper = true)
+ 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 75d7a5877..52825832c 100644
--- a/src/com/engine/salary/timer/SyncCBSAccountDetailsJob.java
+++ b/src/com/engine/salary/timer/SyncCBSAccountDetailsJob.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.AccountManagementClient;
import com.engine.salary.remote.cbs8.config.EBS2ECConfig;
+import com.engine.salary.remote.cbs8.po.UfHkrdzbPO;
import com.engine.salary.remote.cbs8.request.GetTransactionDetailRequest;
import com.engine.salary.remote.cbs8.response.GetTransactionDetailResponse;
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;
@@ -57,6 +60,10 @@ public class SyncCBSAccountDetailsJob extends BaseCronJob {
return MapperProxyFactory.getProxy(SQLMapper.class);
}
+ private UfHkrdzbMapper getUfHkrdzbMapper() {
+ return MapperProxyFactory.getProxy(UfHkrdzbMapper.class);
+ }
+
@Override
public void execute() {
User user = new User();
@@ -88,6 +95,18 @@ public class SyncCBSAccountDetailsJob extends BaseCronJob {
GetTransactionDetailResponse getTransactionDetailResponse = accountManagementClient.transactionDetailQuery(requestParam);
List list = getTransactionDetailResponse.getData().getList();
+ //鍒ゆ柇鏄惁杩樺瓨鍦ㄦ暟鎹紝閫掑綊鏌ヨ
+ boolean hasNextPage = getTransactionDetailResponse.getData().isHasNextPage();
+ int nextPage = getTransactionDetailResponse.getData().getNextPage();
+ while (hasNextPage) {
+ requestParam.setCurrentPage(nextPage);
+ GetTransactionDetailResponse nextPageResponse = accountManagementClient.transactionDetailQuery(requestParam);
+ List pageData = nextPageResponse.getData().getList();
+ list.addAll(pageData);
+ hasNextPage = nextPageResponse.getData().isHasNextPage();
+ nextPage = nextPageResponse.getData().getNextPage();
+ }
+
//鍔犺浇cbs閰嶇疆
XStream xStream = new XStream();
String resource = GCONST.getRootPath() + "WEB-INF" + File.separatorChar + "CBS2ECConfig.xml";
@@ -108,6 +127,10 @@ public class SyncCBSAccountDetailsJob 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 (GetTransactionDetailResponse.Detail detail : list) {
Map detailMap = JsonUtil.parseMap(detail, String.class);
String uniqueData = detailMap.get(uniqueEbsKey);
@@ -127,8 +150,6 @@ public class SyncCBSAccountDetailsJob extends BaseCronJob {
add("modedatacreatertype");
add("modedatacreatedate");
add("modedatacreatetime");
- //涓氬姟閫昏緫瀛楁锛屾敹娆剧被鍨嬶紝榛樿鏄摱琛屽瓨娆
- add("sklx");
}};
String currDate = TimeUtil.getCurrentDateString();
@@ -140,25 +161,51 @@ public class SyncCBSAccountDetailsJob extends BaseCronJob {
add(0);
add(String.format("'%s'", currDate));
add(String.format("'%s'", currTime));
- //涓氬姟閫昏緫瀛楁锛屾敹娆剧被鍨嬶紝榛樿鏄摱琛屽瓨娆
- add(0);
}};
+
+ String hkr = "";
for (EBS2ECConfig.Table.Field field : table.getFields()) {
//鏁版嵁搴撳瓧娈
String fieldName = field.getKey();
fields.add(fieldName);
// 鎺ュ彛鍊
+ String value = detailMap.getOrDefault(field.getEbsKey(), "");
values.add(String.format("'%s'", detailMap.getOrDefault(field.getEbsKey(), "")));
+
+ //姹囨浜
+ if ("hkr".equals(fieldName)) {
+ hkr = value;
+ }
}
+
+ //涓氬姟閫昏緫瀛楁锛屾敹娆剧被鍨嬶紝榛樿鏄摱琛屽瓨娆
+ fields.add("sklx");
+ values.add(0);
/*
* 璁ら閫昏緫锛
- * 鏍规嵁鍥炴浜哄幓琛ㄩ噷鍖归厤銆愬洖娆句汉涓庡姙浜嬪鐨勫鐓ц〃銆
+ * 鏍规嵁姹囨浜哄幓琛ㄩ噷鍖归厤銆愭眹娆句汉涓庡姙浜嬪鐨勫鐓ц〃銆
* 濡傛灉鑳藉尮閰嶅埌鏁版嵁锛屽垯鐘舵佹敼涓哄凡鑷姩璁ら锛屽悓鏃舵妸鍔炰簨澶勶紙閮ㄩ棬锛夌殑鍊煎悓姝ュ埌鍔炰簨澶勫瓧娈典腑锛屾槸鍚︾郴缁熻嚜鍔ㄨ棰嗗悓姝ヤ负鏄紱
* 濡傚鐓ф爣鍑嗘棤鏁版嵁锛屽垯鐘舵佷负锛氭湭璁ら锛
*/
+ 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(",")));
RecordSet rs = new RecordSet();