瀏覽代碼

Merge remote-tracking branch 'origin/temp-pre' into temp-pre

lixuesong 3 年之前
父節點
當前提交
b8ede49e3a

+ 13 - 12
db/v2022/4single_member_settle_same_amount_in_several_months.sql

@@ -10,19 +10,20 @@ DROP TABLE IF EXISTS `single_member_settle_same_amount_in_several_months`;
 CREATE TABLE `single_member_settle_same_amount_in_several_months`
 (
     `record_id`               INT UNSIGNED AUTO_INCREMENT COMMENT 'id',
-    `note_id`                 INT UNSIGNED NOT NULL COMMENT '积分包计算记录id',
-    `realname`                VARCHAR(32)  NOT NULL COMMENT '用户名称',
-    `username`                VARCHAR(11)  NOT NULL COMMENT '用户名',
-    `dept_id`                 INT          NOT NULL COMMENT '结算企业id',
-    `dept_name`               VARCHAR(64)  NOT NULL COMMENT '结算企业名称',
-    `settle_amount`           DECIMAL      NOT NULL COMMENT '结算金额',
+    `note_id`                 INT UNSIGNED NULL COMMENT '积分包计算记录id',
+    `realname`                VARCHAR(32)  NULL COMMENT '用户名称',
+    `username`                VARCHAR(11)  NULL COMMENT '用户名',
+    `id_number`               VARCHAR(18)  NULL COMMENT '身份证',
+    `dept_id`                 INT          NULL COMMENT '结算企业id',
+    `dept_name`               VARCHAR(64)  NULL COMMENT '结算企业名称',
+    `settle_amount`           DECIMAL      NULL COMMENT '结算金额',
     `sub_to_gig_time`         DATETIME     NULL COMMENT '结算时间',
-    `settle_state`            VARCHAR(16)  NOT NULL COMMENT '结算企业名称',
-    `sub_type_name`           VARCHAR(16)  NOT NULL COMMENT '结算渠道名称',
-    `package_name`            VARCHAR(64)  NOT NULL COMMENT '积分包名称',
-    `settle_note_create_time` DATETIME     NOT NULL COMMENT '结算记录创建时间',
-    `period`                  INT UNSIGNED NOT NULL COMMENT '统计周期',
-    `create_time`            DATETIME     NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    `settle_state`            VARCHAR(16)  NULL COMMENT '结算企业名称',
+    `sub_type_name`           VARCHAR(16)  NULL COMMENT '结算渠道名称',
+    `package_name`            VARCHAR(64)  NULL COMMENT '积分包名称',
+    `settle_note_create_time` DATETIME     NULL COMMENT '结算记录创建时间',
+    `period`                  INT UNSIGNED NULL COMMENT '统计周期',
+    `create_time`             DATETIME     NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     PRIMARY KEY (`record_id`) USING BTREE
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='单人连续多月结算相同金额';

+ 1 - 0
db/v2022/6single_ent_settle_same_amount_for_members_in_current_month.sql

@@ -13,6 +13,7 @@ CREATE TABLE `single_ent_settle_same_amount_for_members_in_current_month`
     `note_id`                 INT UNSIGNED NULL COMMENT '积分包计算记录id',
     `realname`                VARCHAR(32)  NULL COMMENT '用户名称',
     `username`                VARCHAR(11)  NULL COMMENT '用户名',
+    `id_number`               VARCHAR(18)  NULL COMMENT '身份证',
     `dept_id`                 INT          NULL COMMENT '结算企业id',
     `dept_name`               VARCHAR(64)  NULL COMMENT '结算企业名称',
     `settle_amount`           DECIMAL      NULL COMMENT '结算金额',

+ 1 - 1
hnqz-common/hnqz-common-taxhelper/src/main/java/com/qunzhixinxi/hnqz/common/taxhelper/service/TaxHelperService.java

@@ -298,7 +298,7 @@ public class TaxHelperService {
 	 * @return 结果字符串
 	 * @throws Exception
 	 */
-	@TaxHelper(value = "userAgreementAuthorization")
+	@TaxHelper(value = "userAgreementAuthorizationV2")
 	public TaxHelperResponse userAgreementAuthorizationV2(TaxHelperUserAgreementAuthorizationRequestV2 request) {
 		TaxHelperResponse response = null;
 		try {

+ 1 - 1
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/vo/UserVO.java

@@ -244,7 +244,7 @@ public class UserVO implements Serializable {
 	private Integer rljCertStatus;
 
 	/**
-	 * 税邦云协议签署,0->未签署,1->已签署
+	 * 税邦云协议签署,0->未签署,1->已签署 2-> 需补签
 	 */
 	@ApiModelProperty(value="税邦云协议签署")
 	private Integer taxHelperAgreementSignature;

+ 26 - 10
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmTaxHelperController.java

@@ -6,12 +6,14 @@ import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.google.gson.JsonObject;
 import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysSocialDetails;
 import com.qunzhixinxi.hnqz.admin.api.entity.SysUser;
 import com.qunzhixinxi.hnqz.admin.api.entity.UserAgreementSignatureRecord;
 import com.qunzhixinxi.hnqz.admin.config.TaxNotifyConfig;
+import com.qunzhixinxi.hnqz.admin.config.UpmsConfig;
 import com.qunzhixinxi.hnqz.admin.entity.SysCertResultRecord;
 import com.qunzhixinxi.hnqz.admin.entity.SysDeptSub;
 import com.qunzhixinxi.hnqz.admin.entity.WmDaAgent;
@@ -24,6 +26,7 @@ import com.qunzhixinxi.hnqz.admin.mapper.UserAgreementSignatureRecordMapper;
 import com.qunzhixinxi.hnqz.admin.service.*;
 import com.qunzhixinxi.hnqz.admin.service.retry.PartyARetryService;
 import com.qunzhixinxi.hnqz.common.core.constant.enums.LoginTypeEnum;
+import com.qunzhixinxi.hnqz.common.core.util.Base64Utils;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
 import com.qunzhixinxi.hnqz.common.security.annotation.Inner;
@@ -47,6 +50,7 @@ import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperECheckReque
 import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperEidTokenRequest;
 import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperGetUserAgreementRequest;
 import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperUserAgreementAuthorizationRequest;
+import com.qunzhixinxi.hnqz.common.taxhelper.entity.request.TaxHelperUserAgreementAuthorizationRequestV2;
 import com.qunzhixinxi.hnqz.common.taxhelper.entity.response.TaxHelperResponse;
 import com.qunzhixinxi.hnqz.common.taxhelper.entity.vo.TaxHelperAddMemberVo;
 import com.qunzhixinxi.hnqz.common.taxhelper.entity.vo.TaxHelperBingCardConfirmVo;
@@ -68,6 +72,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.time.LocalDateTime;
 import java.util.Calendar;
 import java.util.Date;
@@ -104,6 +110,7 @@ public class WmTaxHelperController {
 	private final WmScorePackageSettleNoteService settleNoteService;
 	private final SysDeptSubService sysDeptSubService;
 	private final PartyARetryService partyARetryService;
+	private final UpmsConfig upmsConfig;
 	private final UserAgreementSignatureRecordMapper userAgreementSignatureRecordMapper;
 
 
@@ -180,7 +187,7 @@ public class WmTaxHelperController {
 
 				// 已经增员的补偿逻辑
 				String errorMsg = String.format(CommonConstants.ALREADY_ADD_MEMBER_SUCCESSFUL, dept.getTaxCode());
-				if (errorMsg.equals(response.getMessage())){
+				if (errorMsg.equals(response.getMessage())) {
 					log.info("税邦云历史增员成功:{},{},原因是:{}", user.getRealname(), user.getUsername(), response.getMessage());
 					SysUser tmp = new SysUser();
 					tmp.setUserId(user.getUserId());
@@ -207,7 +214,11 @@ public class WmTaxHelperController {
 	 */
 	@SysLog(value = "税邦云回传用户协议授权信息")
 	@PostMapping(value = "/agreement-signature")
-	public R<?> userAgreementAuthorization() {
+	public R<?> userAgreementAuthorization(@RequestBody String params) {
+
+		JSONObject jsonObject = JSONUtil.parseObj(params);
+		String signPic = jsonObject.getStr("pic");
+
 		HnqzUser hnqzUser = SecurityUtils.getUser();
 
 		// 判断当前用户是否已经存在回调操作,避免同时多次回调
@@ -265,16 +276,21 @@ public class WmTaxHelperController {
 				return R.failed(userAgreement);
 			}
 
-
-			//
 			TaxHelperUserAgreementAuthorizationModel model = new TaxHelperUserAgreementAuthorizationModel(config);
 			model.setEnterpriseCode(dept.getTaxCode());
 			LocalDateTime signTime = LocalDateTime.now();
 			model.setAuthorizationTime(LocalDateTimeUtil.format(signTime, CommonConstants.DEFAULT_DATE_TIME_FORMAT_PATTERN));
 			model.setIdCard(user.getIdCardNumber());
+			try {
+				model.setSignatureHandwriting(Base64Utils.encodeImageWithPrefix(new URI(String.format("%s%s", upmsConfig.getClientUrl(), signPic))));
 
-			TaxHelperUserAgreementAuthorizationRequest request = new TaxHelperUserAgreementAuthorizationRequest(model);
-			TaxHelperResponse response = taxHelperService.userAgreementAuthorization(request);
+			} catch (Exception e) {
+				log.error("获取手签图片失败");
+				return R.failed("获取手签图片失败");
+			}
+
+			TaxHelperUserAgreementAuthorizationRequestV2 request = new TaxHelperUserAgreementAuthorizationRequestV2(model);
+			TaxHelperResponse response = taxHelperService.userAgreementAuthorizationV2(request);
 
 			// 记录认证结果
 			record.setCode(response.getCode());
@@ -846,7 +862,7 @@ public class WmTaxHelperController {
 			sysCertResultRecordMapper.insert(record);
 
 			if (response.success()) {
-				if (Objects.equals(user.getCertStatus(),TaxHelperCertStatus.CERT.getCode())){
+				if (Objects.equals(user.getCertStatus(), TaxHelperCertStatus.CERT.getCode())) {
 					return R.ok(response.getMessage());
 				}
 				SysUser sysUser = new SysUser();
@@ -883,7 +899,7 @@ public class WmTaxHelperController {
 	@Inner(value = false)
 	@PostMapping(value = "/{user_id}/settlementNotify")
 	public String taxHelperSettlementNotify(@PathVariable(value = "user_id") String userId,
-													   @RequestBody String body) {
+											@RequestBody String body) {
 		// 判断当前用户是否已经存在回调操作,避免多次回调
 		String cacheKey = CacheConstants.TAX_HELPER_SETTLEMENT_NOTIFY_KEY + userId;
 		boolean absent = redisTemplate.opsForValue().setIfAbsent(cacheKey, userId, 3, TimeUnit.SECONDS);
@@ -923,7 +939,7 @@ public class WmTaxHelperController {
 			e.printStackTrace();
 			throw new RuntimeException(e.getMessage());
 		}
-		return responseJson(2000,"结算通知回调成功");
+		return responseJson(2000, "结算通知回调成功");
 	}
 
 
@@ -989,7 +1005,7 @@ public class WmTaxHelperController {
 			throw new RuntimeException(e.getMessage());
 		}
 
-		return responseJson(2000,"结算通知回调成功");
+		return responseJson(2000, "结算通知回调成功");
 	}
 
 	/**

+ 5 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth.java

@@ -32,6 +32,11 @@ public class SingleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth imp
 	 */
 	private String realname;
 
+	/**
+	 * 身份证号
+	 */
+	private String IdNumber;
+
 	/**
 	 * 用户名
 	 */

+ 21 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/entity/SingleMemberSettleSameAmountInSeveralMonths.java

@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.Objects;
 
 
 @Data
@@ -32,6 +34,11 @@ public class SingleMemberSettleSameAmountInSeveralMonths implements Serializable
 	 */
 	private String realname;
 
+	/**
+	 * 身份证号
+	 */
+	private String idNumber;
+
 	/**
 	 * 用户名
 	 */
@@ -87,4 +94,18 @@ public class SingleMemberSettleSameAmountInSeveralMonths implements Serializable
 	 */
 	private LocalDateTime createTime;
 
+	@Override
+	public boolean equals(Object o) {
+		if (this == o) return true;
+		if (o == null || getClass() != o.getClass()) return false;
+
+		SingleMemberSettleSameAmountInSeveralMonths that = (SingleMemberSettleSameAmountInSeveralMonths) o;
+
+		return Objects.equals(noteId, that.noteId);
+	}
+
+	@Override
+	public int hashCode() {
+		return noteId != null ? noteId.hashCode() : 0;
+	}
 }

+ 60 - 27
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/service/impl/WmScorePackageSettleNoteServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qunzhixinxi.hnqz.daemon.quartz.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DatePattern;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qunzhixinxi.hnqz.daemon.quartz.entity.SingleMemberSettleSameAmountInSeveralMonths;
@@ -14,9 +15,13 @@ import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.function.Function;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -63,25 +68,42 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 
 		List<SingleMemberSettleSameAmountInSeveralMonths> list = wmScorePackageSettleNoteMapper.singleMemberSettleSameAmountInSeveralMonths(startTime, endTime);
 
-		// 按照用户分组,然后按照结算金额分组,再按创建月分组,如果创建月对应的结算记录大于1,则表明有相同的金额
-		Map<String, Map<BigDecimal, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>>> collect =
-				list.stream().collect(Collectors.groupingBy(SingleMemberSettleSameAmountInSeveralMonths::getUsername,
-						Collectors.groupingBy(SingleMemberSettleSameAmountInSeveralMonths::getSettleAmount,
-								Collectors.groupingBy(e -> DateTimeFormatter.ofPattern(DatePattern.NORM_MONTH_PATTERN).format(LocalDateTime.parse(e.getSettleNoteCreateTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)))))));
+		// 按照用户分组,然后按照月度分组
+		Map<String, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>> collect = list.stream().collect(Collectors.groupingBy(SingleMemberSettleSameAmountInSeveralMonths::getIdNumber,
+				Collectors.groupingBy(e -> DateTimeFormatter.ofPattern(DatePattern.NORM_MONTH_PATTERN).format(LocalDateTime.parse(e.getSettleNoteCreateTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN))))));
 
+		List<SingleMemberSettleSameAmountInSeveralMonths> riskList = new ArrayList<>(list.size());
 
-		List<SingleMemberSettleSameAmountInSeveralMonths> duplicated = new ArrayList<>(list.size());
+		// 遍历结果
+		for (Map.Entry<String, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>> entry : collect.entrySet()) {
+			// 如果 只有一个月结算自动跳过
+			if (entry.getValue().size() <= 1){
+				continue;
+			}
+			// 遍历个人
+			Map<BigDecimal, List<SingleMemberSettleSameAmountInSeveralMonths>> temp = new HashMap<>();
+			for (Map.Entry<String, List<SingleMemberSettleSameAmountInSeveralMonths>> ent : entry.getValue().entrySet()) {
+				// 计算每个月份的金额
+				Optional<BigDecimal> reduce = ent.getValue().stream().map(SingleMemberSettleSameAmountInSeveralMonths::getSettleAmount).filter(Objects::nonNull)
+						.reduce(BigDecimal::add);
+
+				if (!reduce.isPresent()) {
+					break;
+				}
 
-		for (Map.Entry<String, Map<BigDecimal, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>>> entry : collect.entrySet()) {
-			for (Map.Entry<BigDecimal, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>> ent : entry.getValue().entrySet()) {
-				Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>> entValue = ent.getValue();
-				if (entValue.size() > 1) {
-					entValue.forEach((key, value) -> duplicated.addAll(value));
+				// 判断是否有相同的金额
+				if (temp.containsKey(reduce.get())) {
+					riskList.addAll(temp.get(reduce.get()));
+					riskList.addAll(ent.getValue());
+				}
+				// 记录月份结算值
+				else {
+					temp.put(reduce.get(),ent.getValue());
 				}
 			}
 		}
 
-		return duplicated;
+		return riskList;
 	}
 
 	/**
@@ -96,7 +118,7 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 	public List<SingleMemberSettleSameAmountInSeveralMonths> singleMemberSettleAmountOverrunInSeveralMonths(LocalDateTime startTime, LocalDateTime endTime, BigDecimal limit) {
 		List<SingleMemberSettleSameAmountInSeveralMonths> list = wmScorePackageSettleNoteMapper.singleMemberSettleSameAmountInSeveralMonths(startTime, endTime);
 
-		Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>> collect = list.stream().collect(Collectors.groupingBy(SingleMemberSettleSameAmountInSeveralMonths::getUsername));
+		Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>> collect = list.stream().collect(Collectors.groupingBy(SingleMemberSettleSameAmountInSeveralMonths::getIdNumber));
 
 		List<SingleMemberSettleSameAmountInSeveralMonths> riskList = new ArrayList<>(list.size());
 
@@ -131,24 +153,35 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 	public List<SingleMemberSettleSameAmountInSeveralMonths> singleEnterpriseSettleSameAmountForSeveralMembersInCurrentMonth(LocalDateTime startTime, LocalDateTime endTime, int memberCount) {
 		List<SingleMemberSettleSameAmountInSeveralMonths> list = wmScorePackageSettleNoteMapper.singleMemberSettleSameAmountInSeveralMonths(startTime, endTime);
 
-		// 按照企业分组,然后按照结算金额分组,然后按照月份分组如果结算金额对应的结算记录大于1,则表明有相同的金额
-		Map<String, Map<BigDecimal, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>>> collect =
-				list.stream().collect(Collectors.groupingBy(SingleMemberSettleSameAmountInSeveralMonths::getDeptId,
-						Collectors.groupingBy(SingleMemberSettleSameAmountInSeveralMonths::getSettleAmount,
-								Collectors.groupingBy(e -> DateTimeFormatter.ofPattern(DatePattern.NORM_MONTH_PATTERN).format(LocalDateTime.parse(e.getSettleNoteCreateTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)))))));
+		// 按照企业分组,然后按照用户分组
+		Map<String, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>> collect = list.stream().collect(Collectors.groupingBy(SingleMemberSettleSameAmountInSeveralMonths::getDeptId,
+				Collectors.groupingBy(SingleMemberSettleSameAmountInSeveralMonths::getIdNumber)));
 
-		List<SingleMemberSettleSameAmountInSeveralMonths> riskResult = new ArrayList<>(list.size());
+		Set<SingleMemberSettleSameAmountInSeveralMonths> riskResult = new HashSet<>(list.size());
 
-		for (Map.Entry<String, Map<BigDecimal, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>>> entry : collect.entrySet()) {
-			for (Map.Entry<BigDecimal, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>> ent : entry.getValue().entrySet()) {
-				Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>> entValue = ent.getValue();
-				if (entValue.size() > memberCount) {
-					entValue.forEach((k, v) -> riskResult.addAll(v));
+		// 遍历所有记录
+		for (Map.Entry<String, Map<String, List<SingleMemberSettleSameAmountInSeveralMonths>>> entry : collect.entrySet()) {
+			// 遍历所有人
+			Map<BigDecimal, List<SingleMemberSettleSameAmountInSeveralMonths>> temp = new HashMap<>();
+			for (Map.Entry<String, List<SingleMemberSettleSameAmountInSeveralMonths>> ent : entry.getValue().entrySet()) {
+				// 计算每个人的结算金额
+				Optional<BigDecimal> reduce = ent.getValue().stream().map(SingleMemberSettleSameAmountInSeveralMonths::getSettleAmount).filter(Objects::nonNull)
+						.reduce(BigDecimal::add);
+
+				if (!reduce.isPresent()) {
+					continue;
+				}
+
+				if (temp.containsKey(reduce.get())) {
+					riskResult.addAll(temp.get(reduce.get()));
+					riskResult.addAll(ent.getValue());
+				} else {
+					temp.put(reduce.get(), ent.getValue());
 				}
+
 			}
 
 		}
-
-		return riskResult;
+		return new ArrayList<>(riskResult);
 	}
 }

+ 2 - 0
hnqz-visual/hnqz-daemon-quartz/src/main/resources/mapper/WmScorePackageSettleNoteMapper.xml

@@ -31,6 +31,7 @@
 		<id property="noteId" column="id"/>
 		<result property="realname" column="realname"/>
 		<result property="username" column="username"/>
+		<result property="idNumber" column="id_number"/>
 		<result property="deptId" column="dept_id"/>
 		<result property="deptName" column="dept_name"/>
 		<result property="settleAmount" column="settle_amount"/>
@@ -57,6 +58,7 @@
 		SELECT wspsn.id,
 			   su.realname,
 			   su.username,
+		       su.id_card_number AS `id_number`,
 			   sd.dept_id,
 			   sd.name AS `dept_name`,
 			   wspsn.settle_amount,