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();