ht 4 днів тому
батько
коміт
b681228898

+ 13 - 0
README.md

@@ -236,6 +236,19 @@ POST /api/yida/minglei/employee-roster/getUserRoster
 Content-Type: application/json
 ```
 
+响应体的 `result` 包含花名册基础信息和银行信息:
+
+```json
+{
+  "employeeNo": "2601010001",
+  "username": "张三",
+  "bank_card_no": "6222000000000000",
+  "bank_name": "示例银行"
+}
+```
+
+`bank_card_no` 为银行卡号,`bank_name` 为开户行名称。
+
 ### 4.5 外部 T100 接口转发
 
 ```http

+ 22 - 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;
+
 /**
  * 员工花名册查询结果。
  */
@@ -9,6 +11,10 @@ public class EmployeeRosterInfo {
     private String dingtalkId;
     private String employeeNo;
     private String username;
+    @JsonProperty("bank_card_no")
+    private String bankCardNo;
+    @JsonProperty("bank_name")
+    private String bankName;
     private String jobTitle;
     private String jobTitleId;
     private String jobGrade;
@@ -48,6 +54,22 @@ public class EmployeeRosterInfo {
         this.username = username;
     }
 
+    public String getBankCardNo() {
+        return bankCardNo;
+    }
+
+    public void setBankCardNo(String bankCardNo) {
+        this.bankCardNo = bankCardNo;
+    }
+
+    public String getBankName() {
+        return bankName;
+    }
+
+    public void setBankName(String bankName) {
+        this.bankName = bankName;
+    }
+
     public String getJobTitle() {
         return jobTitle;
     }

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

@@ -154,6 +154,8 @@ public class EmployeeRosterRepository {
         info.setDingtalkId(resultSet.getString("dingtalk_id"));
         info.setEmployeeNo(resultSet.getString("employee_no"));
         info.setUsername(resultSet.getString("username"));
+        info.setBankCardNo(resultSet.getString("bank_card_no"));
+        info.setBankName(resultSet.getString("bank_name"));
         info.setJobTitle(resultSet.getString("job_title"));
         info.setJobTitleId(resultSet.getString("job_title_id"));
         info.setJobGrade(resultSet.getString("job_grade"));

+ 1 - 0
src/main/resources/application.yml

@@ -13,6 +13,7 @@ spring:
   application:
     name: mjava-minglei
   profiles:
+#    active: ${SPRING_PROFILES_ACTIVE:test}
     active: ${SPRING_PROFILES_ACTIVE:prod}
     group:
       dev: test

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

@@ -10,9 +10,11 @@ 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 com.malk.minglei.dto.EmployeeRosterInfo;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -76,6 +78,33 @@ class EmployeeRosterRepositoryTest {
         assertTrue(sqlCaptor.getValue().contains("bank_branch_code"));
     }
 
+    @Test
+    @SuppressWarnings({"rawtypes", "unchecked"})
+    void mapsBankCardNumberAndBankNameForRosterQuery() throws Exception {
+        JdbcTemplate jdbcTemplate = mock(JdbcTemplate.class);
+        ObjectProvider<JdbcTemplate> jdbcTemplateProvider = mock(ObjectProvider.class);
+        given(jdbcTemplateProvider.getIfAvailable()).willReturn(jdbcTemplate);
+        given(jdbcTemplate.query(any(String.class), any(PreparedStatementSetter.class), any(RowMapper.class)))
+                .willReturn(Collections.emptyList());
+        EmployeeRosterRepository repository = new EmployeeRosterRepository(
+                jdbcTemplateProvider,
+                new EmployeeRosterProperties());
+
+        repository.findByEmployeeNo("1001");
+
+        ArgumentCaptor<RowMapper> rowMapperCaptor = ArgumentCaptor.forClass(RowMapper.class);
+        verify(jdbcTemplate).query(any(String.class), any(PreparedStatementSetter.class), rowMapperCaptor.capture());
+        ResultSet resultSet = mock(ResultSet.class);
+        given(resultSet.getInt("id")).willReturn(1);
+        given(resultSet.getString("bank_card_no")).willReturn("6222000000000000");
+        given(resultSet.getString("bank_name")).willReturn("示例银行");
+
+        EmployeeRosterInfo result = (EmployeeRosterInfo) rowMapperCaptor.getValue().mapRow(resultSet, 0);
+
+        assertEquals("6222000000000000", result.getBankCardNo());
+        assertEquals("示例银行", result.getBankName());
+    }
+
     @Test
     @SuppressWarnings({"rawtypes", "unchecked"})
     void findByUsernameFiltersResignedEmployees() {