Sfoglia il codice sorgente

fix: 恢复员工花名册银行信息返回

lfx 5 giorni fa
parent
commit
4b34691f02

+ 56 - 0
src/main/java/com/malk/minglei/dto/EmployeeRosterInfo.java

@@ -1,5 +1,7 @@
 package com.malk.minglei.dto;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 /**
  * 员工花名册查询结果。
  */
@@ -15,6 +17,9 @@ public class EmployeeRosterInfo {
     private String jobGradeId;
     private String department;
     private String firstDepartment;
+    private String bankCardNo;
+    private String bankName;
+    private String bankBranchCode;
 
     public Integer getId() {
         return id;
@@ -95,4 +100,55 @@ public class EmployeeRosterInfo {
     public void setFirstDepartment(String firstDepartment) {
         this.firstDepartment = firstDepartment;
     }
+
+    /**
+     * 获取银行卡号。
+     * @return 银行卡号
+     */
+    @JsonProperty("bank_card_no")
+    public String getBankCardNo() {
+        return bankCardNo;
+    }
+
+    /**
+     * 设置银行卡号。
+     * @param bankCardNo 银行卡号
+     */
+    public void setBankCardNo(String bankCardNo) {
+        this.bankCardNo = bankCardNo;
+    }
+
+    /**
+     * 获取开户行。
+     * @return 开户行
+     */
+    @JsonProperty("bank_name")
+    public String getBankName() {
+        return bankName;
+    }
+
+    /**
+     * 设置开户行。
+     * @param bankName 开户行
+     */
+    public void setBankName(String bankName) {
+        this.bankName = bankName;
+    }
+
+    /**
+     * 获取支行联行号。
+     * @return 支行联行号
+     */
+    @JsonProperty("bank_branch_code")
+    public String getBankBranchCode() {
+        return bankBranchCode;
+    }
+
+    /**
+     * 设置支行联行号。
+     * @param bankBranchCode 支行联行号
+     */
+    public void setBankBranchCode(String bankBranchCode) {
+        this.bankBranchCode = bankBranchCode;
+    }
 }

+ 3 - 0
src/main/java/com/malk/minglei/service/impl/employee/EmployeeRosterRepository.java

@@ -160,6 +160,9 @@ public class EmployeeRosterRepository {
         info.setJobGradeId(resultSet.getString("job_grade_id"));
         info.setDepartment(resultSet.getString("department"));
         info.setFirstDepartment(resultSet.getString("first_department"));
+        info.setBankCardNo(resultSet.getString("bank_card_no"));
+        info.setBankName(resultSet.getString("bank_name"));
+        info.setBankBranchCode(resultSet.getString("bank_branch_code"));
         return info;
     }
 

+ 40 - 0
src/test/java/com/malk/minglei/service/impl/employee/EmployeeRosterRepositoryTest.java

@@ -1,7 +1,12 @@
 package com.malk.minglei.service.impl.employee;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.malk.minglei.config.EmployeeRosterProperties;
+import com.malk.minglei.dto.ApiResponse;
+import com.malk.minglei.dto.EmployeeRosterInfo;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 import org.mockito.ArgumentCaptor;
 import org.springframework.beans.factory.ObjectProvider;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -10,8 +15,10 @@ import org.springframework.jdbc.core.ResultSetExtractor;
 import org.springframework.jdbc.core.RowMapper;
 
 import java.sql.PreparedStatement;
+import java.sql.ResultSet;
 import java.time.LocalDate;
 import java.util.Collections;
+import java.util.Map;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -23,6 +30,39 @@ import static org.mockito.Mockito.verify;
 
 class EmployeeRosterRepositoryTest {
 
+    @ParameterizedTest
+    @CsvSource(value = {"6222020000000000000,Test Bank,123456789012", "NULL,NULL,NULL"}, nullValues = "NULL")
+    @SuppressWarnings({"rawtypes", "unchecked"})
+    void findByDingtalkIdReturnsBankInformationInResponse(String cardNo, String bankName, String branchCode) throws Exception {
+        JdbcTemplate jdbcTemplate = mock(JdbcTemplate.class);
+        ObjectProvider<JdbcTemplate> jdbcTemplateProvider = mock(ObjectProvider.class);
+        given(jdbcTemplateProvider.getIfAvailable()).willReturn(jdbcTemplate);
+        ResultSet row = mock(ResultSet.class);
+        given(row.getString("dingtalk_id")).willReturn("user-1");
+        given(row.getString("bank_card_no")).willReturn(cardNo);
+        given(row.getString("bank_name")).willReturn(bankName);
+        given(row.getString("bank_branch_code")).willReturn(branchCode);
+        given(jdbcTemplate.query(any(String.class), any(PreparedStatementSetter.class), any(RowMapper.class)))
+                .willAnswer(invocation -> Collections.singletonList(
+                        ((RowMapper<?>) invocation.getArgument(2)).mapRow(row, 0)));
+
+        EmployeeRosterRepository repository = new EmployeeRosterRepository(jdbcTemplateProvider, new EmployeeRosterProperties());
+        EmployeeRosterInfo info = repository.findByDingtalkId("user-1");
+        Map body = new ObjectMapper().convertValue(ApiResponse.success(info), Map.class);
+        Map result = (Map) body.get("result");
+
+        assertEquals("user-1", result.get("dingtalkId"));
+        assertTrue(result.containsKey("bank_card_no"));
+        assertTrue(result.containsKey("bank_name"));
+        assertTrue(result.containsKey("bank_branch_code"));
+        assertEquals(cardNo, result.get("bank_card_no"));
+        assertEquals(bankName, result.get("bank_name"));
+        assertEquals(branchCode, result.get("bank_branch_code"));
+        assertFalse(result.containsKey("bankCardNo"));
+        assertFalse(result.containsKey("bankName"));
+        assertFalse(result.containsKey("bankBranchCode"));
+    }
+
     @Test
     @SuppressWarnings({"rawtypes", "unchecked"})
     void reserveNextEmployeeNoUsesEmployeeRosterEmployeeNoAndLocksDailyRange() throws Exception {