Commit 619c3f5c authored by yangyang's avatar yangyang

对接聚富通

parent a5bd68ce
package com.yeejoin.amos.boot.module.hygf.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
/**
* 聚富通枚举
*
* <p>
* ProjectName: amos-boot-zx-biz
* PackageName: com.yeejoin.amos.boot.module.hygf.api.Enum
*
* @author yangyang
* @version v1.0
* @date 2024/7/18 11:51
*/
@Data
public class IcbcEnum {
/**
* 开户状态
*/
@Getter
@NoArgsConstructor
@AllArgsConstructor
public static enum OpenAccountState {
INITIAL("初始", "00"),
OPENING("开户中", "01"),
SUCCESSFULLY("开户成功", "02"),
FAIL("开户失败", "03");
/**
* 名称,描述
*/
private String name;
/**
* 编码
*/
private String code;
public static String getNameByCode(String code, String defaultName) {
for (OpenAccountState state : OpenAccountState.values()) {
if (state.getCode().equals(code)) {
return state.getName();
}
}
if (StringUtils.isNotEmpty(defaultName)) {
return defaultName;
}
return null;
}
}
/**
* 协议状态, 0-未生效,1-已生效,2-过期,3-作废,4-待短信确认
*/
@Getter
@NoArgsConstructor
@AllArgsConstructor
enum ProtocolStatus {
NOT_EFFECTIVE("未生效", "0"),
EFFECTIVE("已生效", "1"),
OVERDUE("过期", "2"),
DISCARD("作废", "3"),
WAITTING_SMS("待短信确认", "4");
/**
* 名称,描述
*/
private String name;
/**
* 编码
*/
private String code;
}
}
package com.yeejoin.amos.boot.module.hygf.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* (hygf_icbc_record)实体类
*
* @author yangyang
* @description
* @since 2024-07-18 11:40:46
*/
@Data
@NoArgsConstructor
@ApiModel (value = "HygfIcbcRecordDTO", description = "聚富通钱包开户DTO")
public class HygfIcbcRecordDTO {
private static final long serialVersionUID = 1L;
protected Long sequenceNbr;
@ApiModelProperty (value = "农户姓名")
private String custName;
/**
* 身份证号
*/
@ApiModelProperty (value = "身份证号")
private String idCard;
/**
* 手机号码
*/
@ApiModelProperty (value = "手机号码")
private String phone;
/**
* 聚富通电子账户账号
*/
@ApiModelProperty (value = "聚富通电子账户账")
private String mediumId;
/**
* 项目编号
*/
@ApiModelProperty (value = "项目编号")
private String projectId;
/**
* 开户状态, 00-初始,01-开户中,02-开户成功,03-开户失败
*/
@ApiModelProperty (value = "开户状态, 00-初始,01-开户中,02-开户成功,03-开户失败")
private String openAccountStatus;
@ApiModelProperty (value = "开户状态Name")
private String openAccountStatusName;
/**
* 协议状态, 0-未生效,1-已生效,2-过期,3-作废,4-待短信确认
*/
@ApiModelProperty (value = "协议状态, 0-未生效,1-已生效,2-过期,3-作废,4-待短信确认")
private String protocolStatus;
@ApiModelProperty (value = "协议状态Name")
private String protocolStatusName;
/**
* 协议开始日期
*/
@ApiModelProperty (value = "协议开始日期")
private Date protocolStartTime;
/**
* 协议终止日期
*/
@ApiModelProperty (value = "协议终止日期")
private Date protocolEndTime;
/**
* 单笔限额
*/
@ApiModelProperty (value = "单笔限额")
private String trxLimitAmount;
/**
* 日累计限额
*/
@ApiModelProperty (value = "日累计限额")
private String dayLimitAmount;
/**
* 协议总限额
*/
@ApiModelProperty (value = "协议总限额")
private String protocolLimitAmount;
/**
* 合作方 appid
*/
@ApiModelProperty (value = "合作方 appid")
private String appId;
/**
* 外部用户编号
*/
@ApiModelProperty (value = "外部用户编号")
private String outUserId;
/**
* 企业外系统编号
*/
@ApiModelProperty (value = "企业外系统编号")
private String outVendorId;
/**
* signEntrsutPrtlStatus
*/
@ApiModelProperty (value = "signEntrsutPrtlStatus")
private String signEntrsutPrtlStatus;
/**
* 作废申请状态
*/
@ApiModelProperty (value = "作废申请状态")
private String discardStatus;
@ApiModelProperty(value = "农户id")
private String amosUserId;
@ApiModelProperty(value = "电站信息")
private List<IcbcPeasantHousehold> peasantHouseholds;
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class IcbcPeasantHousehold {
/**
* 农户信息编号
*/
private String peasantHouseholdNo;
/**
* 项目地址
*/
private List<Integer> projectAddress;
/**
* 项目地址
*/
private String projectAddressName;
/*
* 区域公司id
* */
private Long regionalCompaniesSeq;
/*
* 区域公司code
* */
private String regionalCompaniesCode;
/*
* 区域公司名称
* */
private String regionalCompaniesName;
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.hygf.api.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* <p>
* ProjectName: amos-boot-zx-biz
* PackageName: com.yeejoin.amos.boot.module.hygf.api.dto
*
* @author yangyang
* @version v1.0
* @date 2024/7/18 14:36
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class HygfIcbcRecordQueryDTO {
@ApiModelProperty (value = "开户状态, 00-初始,01-开户中,02-开户成功,03-开户失败")
private String openAccountStatus;
@ApiModelProperty (value = "农户姓名")
private String custName;
@ApiModelProperty (value = "身份证号")
private String idCard;
@ApiModelProperty (value = "手机号码")
private String phone;
@ApiModelProperty (value = "区域公司")
private String regionalCompaniesSeq;
@ApiModelProperty (value = "所属地址")
private String address;
}
package com.yeejoin.amos.boot.module.hygf.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* (hygf_icbc_record)实体类
*
* @author yangyang
* @description
* @since 2024-07-18 11:40:46
*/
@Data
@NoArgsConstructor
@Accessors (chain = true)
@TableName (value = "hygf_icbc_record", autoResultMap = true)
public class HygfIcbcRecord extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 农户姓名
*/
@TableField ("cust_name")
private String custName;
/**
* 身份证号
*/
@TableField ("id_card")
private String idCard;
/**
* 手机号码
*/
@TableField ("phone")
private String phone;
/**
* 聚富通电子账户账号
*/
@TableField ("medium_id")
private String mediumId;
/**
* 项目编号
*/
@TableField ("project_id")
private String projectId;
/**
* 开户状态, 00-初始,01-开户中,02-开户成功,03-开户失败
*/
@TableField ("open_account_status")
private String openAccountStatus;
/**
* 协议状态, 0-未生效,1-已生效,2-过期,3-作废,4-待短信确认
*/
@TableField ("protocol_status")
private String protocolStatus;
/**
* 协议开始日期
*/
@TableField ("protocol_start_time")
private Date protocolStartTime;
/**
* 协议终止日期
*/
@TableField ("protocol_end_time")
private Date protocolEndTime;
/**
* 单笔限额
*/
@TableField ("trx_limit_amount")
private String trxLimitAmount;
/**
* 日累计限额
*/
@TableField ("day_limit_amount")
private String dayLimitAmount;
/**
* 协议总限额
*/
@TableField ("protocol_limit_amount")
private String protocolLimitAmount;
/**
* 合作方 appid
*/
@TableField ("app_id")
private String appId;
/**
* 外部用户编号
*/
@TableField ("out_user_id")
private String outUserId;
/**
* 企业外系统编号
*/
@TableField ("out_vendor_id")
private String outVendorId;
/**
* signEntrsutPrtlStatus
*/
@TableField ("sign_entrsut_prtl_status")
private String signEntrsutPrtlStatus;
/**
* 作废申请状态
*/
@TableField ("discard_status")
private String discardStatus;
/**
* 农户 用户 id
*/
@TableField("amos_user_id")
private String amosUserId;
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.hygf.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.hygf.api.config.UserEmpower;
import com.yeejoin.amos.boot.module.hygf.api.dto.AcceptanceDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.HygfIcbcRecordDTO;
import com.yeejoin.amos.boot.module.hygf.api.dto.HygfIcbcRecordQueryDTO;
import com.yeejoin.amos.boot.module.hygf.api.entity.HygfIcbcRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* (hygf_icbc_record)数据Mapper
*
* @author yangyang
* @description
* @since 2024-07-18 11:40:46
*/
public interface HygfIcbcRecordMapper extends BaseMapper<HygfIcbcRecord> {
@UserEmpower (field = {"ph.regional_companies_code"}, dealerField = {"ph.developer_code", "ph.regional_companies_code", "ph.developer_user_id"}, fieldConditions = {"in", "in", "in"}, relationship = "and")
List<HygfIcbcRecordDTO> listObject(@Param ("param") HygfIcbcRecordQueryDTO hygfIcbcRecordQueryDTO);
}
package com.yeejoin.amos.boot.module.hygf.api.service;
/**
* 服务接口
*
* @author yangyang
* @since 2024-07-18 11:40:46
* @description
*/
public interface HygfIcbcRecordService {
}
package com.yeejoin.amos.boot.module.hygf.biz.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.hygf.api.config.UserLimits;
import com.yeejoin.amos.boot.module.hygf.api.dto.FinancingRectificationOrderDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.HouseholdContractDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.HygfIcbcRecordDTO;
import com.yeejoin.amos.boot.module.hygf.api.dto.HygfIcbcRecordQueryDTO;
import com.yeejoin.amos.boot.module.hygf.biz.service.impl.HygfIcbcServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
......@@ -19,23 +29,53 @@ import javax.servlet.http.HttpServletResponse;
*/
@RestController
@Api(tags = "电子钱包")
@RequestMapping(value = "/icbc")
@Api (tags = "电子钱包")
@RequestMapping (value = "/icbc")
public class HygfIcbcController extends BaseController {
@Autowired
HygfIcbcServiceImpl hygfIcbcService;
@TycloudOperation(ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping(value = "/icbcRegisterWalletUrl")
@ApiOperation(httpMethod = "GET",value = "注册电子钱包", notes = "注册电子钱包")
@TycloudOperation (ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping (value = "/icbcRegisterWalletUrl")
@ApiOperation (httpMethod = "GET", value = "注册电子钱包", notes = "注册电子钱包")
public void getHygfIcbcRegisterWalletUrl(HttpServletRequest req, HttpServletResponse resp) {
hygfIcbcService.icbcRegisterWalletUrl(req, resp);
hygfIcbcService.icbcRegisterWalletUrl(req, resp);
}
@TycloudOperation (ApiLevel = UserType.AGENCY, needAuth = false)
@PostMapping (value = "/registerWalletCallback")
@ApiOperation (httpMethod = "POST", value = "注册电子钱包回调", notes = "注册电子钱包回调")
public ResponseModel<HygfIcbcRecordDTO> registerWalletCallback(@ApiParam @RequestBody HygfIcbcRecordDTO hygfIcbcRecordDTO) {
return ResponseHelper.buildResponse(hygfIcbcService.registerWalletCallback(hygfIcbcRecordDTO));
}
@TycloudOperation (ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping (value = "/{sequenceNbr}")
@ApiOperation (httpMethod = "GET", value = "根据sequenceNbr查询注册电子钱包", notes = "注册电子钱包")
public ResponseModel<HygfIcbcRecordDTO> getObject(@PathVariable String sequenceNbr) {
return ResponseHelper.buildResponse(hygfIcbcService.getObject(Long.valueOf(sequenceNbr)));
}
@TycloudOperation (ApiLevel = UserType.AGENCY, needAuth = false)
@GetMapping (value = "/list")
@ApiOperation (httpMethod = "GET", value = "聚富通电子钱包列表查询", notes = "聚富通电子钱包列表查询")
@UserLimits
public ResponseModel<List<HygfIcbcRecordDTO>> listObject(@ApiParam HygfIcbcRecordQueryDTO hygfIcbcRecordQueryDTO) {
return ResponseHelper.buildResponse(hygfIcbcService.listObject(hygfIcbcRecordQueryDTO));
}
@TycloudOperation (ApiLevel = UserType.AGENCY)
@GetMapping (value = "/page")
@ApiOperation (httpMethod = "GET", value = "聚富通电子钱包分页查询", notes = "聚富通电子钱包分页查询")
@UserLimits
public ResponseModel<Page<HygfIcbcRecordDTO>> queryForPage(@RequestParam (value = "current") int current,
@RequestParam(value = "size") int size,
@ApiParam @RequestParam HygfIcbcRecordQueryDTO hygfIcbcRecordQueryDTO) {
return ResponseHelper.buildResponse(hygfIcbcService.queryForPage(current, size, hygfIcbcRecordQueryDTO));
}
}
package com.yeejoin.amos.boot.module.hygf.biz.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.icbc.api.IcbcConstants;
import com.icbc.api.UiIcbcClient;
import com.icbc.api.request.JftUiUserEntrustopenacctSubmitRequestV1;
import com.yeejoin.amos.boot.module.hygf.api.Enum.IcbcEnum;
import com.yeejoin.amos.boot.module.hygf.api.dto.FinancingInfoDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.FinancingRectificationOrderDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.HygfIcbcRecordDTO;
import com.yeejoin.amos.boot.module.hygf.api.dto.HygfIcbcRecordQueryDTO;
import com.yeejoin.amos.boot.module.hygf.api.entity.FinancingInfo;
import com.yeejoin.amos.boot.module.hygf.api.entity.HygfIcbcRecord;
import com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold;
import com.yeejoin.amos.boot.module.hygf.api.mapper.FinancingInfoMapper;
import com.yeejoin.amos.boot.module.hygf.api.mapper.HygfIcbcRecordMapper;
import com.yeejoin.amos.boot.module.hygf.api.service.IHygfIcbcService;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.typroject.tyboot.core.foundation.utils.Bean;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
/**
......@@ -22,10 +48,10 @@ import java.util.UUID;
*/
@Service
@Slf4j
public class HygfIcbcServiceImpl implements IHygfIcbcService {
public class HygfIcbcServiceImpl extends BaseService<HygfIcbcRecordDTO, HygfIcbcRecord, HygfIcbcRecordMapper> implements IHygfIcbcService {
private static final long serialVersionUID = 1L;
// 合作方 APPID
private static final String APP_ID = "11000000000000028870";
private static final String APP_ID = "11000000000000028870";
// 此处替换合作方 APPID 对应私钥
private static final String MY_PRIVATE_KEY = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDAlcIeANdqipul3/qAIRlknSacHiFCMzLzUJisGcr9ipm3p2rir8WDsac2MxgtUt+f89SGNoWyjv4q0/QAKQQTd5U3KuGAksCJLBGVibuFe7G7YGYVezUksjvocvp8GIinCIkzq67KL2SOpGXAu3s+282rx8AxdTZA/EhXQvbORbWz5+DamyY+wS7Maa8KmIOb6WZPtiXgENZxDHAafrqW8Gt1BnVfJNf5yS5J9Wl+LcR1EPvi5iH8dSIdn1ZMVupoREjV/DvItSogVehsqTRZWuekAo2xH9YEli1UMG/l3deViRn/A4VmPPzdv0xXpn/yO+OTjWez+KmSmJfAZXBvAgMBAAECggEABRYviWFWTz8X+1qeIDI/nHO2KFt3X2tAxkJztd/8h5PYmYw3e4NPATp5Ayp4UgIlW/ExxNW91EiImBL/F939eJIpA8sDJ8U4hqb+U+fOZyksOZnDOIAHmE+I24vl588yFM9Z6F55gGeeDVJ0SZHqIG/nz8i339aLt02yj3N6V1peQugBP6L9arcD+gVu4F70whkqW+lHBK/WzX1OazqEx3Ip175jqzi9/0vO/h/kqnGGXuMi2VeuAPsa+d0a6lf/FScxqCt3t6dCkJ5DPA1MCj81dPi5ZfCM/vE0N8I6LEV+RyC7bb4YVO/PoicFjb2j8vfLvldOUrsvkNH51dZusQKBgQDpMHacOBpIuVzEFfNtS9SgA96cUV6NCSmHoQppJ/p9xKzY4DpcqoOCIBT4WCvVe6PeN5mrjzt8Q5gJWxiq0tVgIF9k8GjLmuiJ2v4Qh8aUmlRwn0T0DYiX/Y7uzX+pRlkpoKrSktlTOT9vmGwZDGDk0h2+H3hZ3YQEucfA6bhHmQKBgQDTbHrbr1WsUR9lrdLaGi/Uphpl3BXLuCnJXav3yIZOktO5V68MfPZXLP7aaNtbK3n0YHD+Uv8wpHBBSWQYjVYlGdvlniA/W1pr73GZJECFfS1BmmFC4GG3E92D5IkmrcPlUuz8XxKrlwHnfW1F0MoDvhp930vS0tS6u+WYTt9dRwKBgCeEQPVkRIACeYf5OFFTQmsDfNv8pgs8fD8xuTPsxHQ/uhLenMVLWBHbIfKb7oG0/CYSQgZitW/vfHpJZ7q7E9HAaqoOW5P1YmbKJ7fhanOQW7LiKqs5B+bJ30j0piendkCpq4kXvaBu2SMuL1NnV5wvRz8K0jhYY6DxYrp8YPAxAoGAZxWTaZ25tgTvvBHeprzx6Ur7wAJpFiU7KpVjjbLV2WW5mbro/LvJGIQ11qQdn/w4wDBtp3MsPblPimWQSnBPOlO7Zd+NdZbDJbFfv/1vACcic8Qj/AmPW0ZyUSaSwKskwqGGLx7j6Yn9QbNkHhBJDz4XiJvhSm/FjS6kKXj7a20CgYEArnEiPmL5g1Ca/qKK9ql8Q6P9gipIfGGpaFu23y0trbcFpVn8Oos/ic0Jgw4Xiz+rqvb6bW2V6lqBJ+9/kdn0i7zlZxKNpYsW2xFgi04OU3d5HkGL16Y1rpqMYYEhjFaOIn7J8P046UYR99yaybgQd18TE6oFrX8OL5uY8M4ge4Y=";
// 指定《聚富通委托代扣签约同步开户页面服务V1》URL
......@@ -36,8 +62,14 @@ public class HygfIcbcServiceImpl implements IHygfIcbcService {
private static final String AES_Key = "nuCVNzIxOTHZWv8YjEeYQA==";
private static final String CAMS_PUBLIC_KEY = "655CE8706E6ED9A30B92E57D8D645ADDE8C541C27C5C5AFD529C610C4C0B04F9074E3B6E933C50A3316AEA60CEF461BE4C7916D2AF51170D3A2631394A7F3939";
@Resource (type = PeasantHouseholdServiceImpl.class)
private PeasantHouseholdServiceImpl peasantHouseholdService;
@Resource (type = HygfIcbcRecordMapper.class)
private HygfIcbcRecordMapper hygfIcbcRecordMapper;
@Override
public void icbcRegisterWalletUrl(HttpServletRequest req, HttpServletResponse resp) {
public void icbcRegisterWalletUrl(HttpServletRequest req, HttpServletResponse resp) {
try {
UiIcbcClient client = new UiIcbcClient(APP_ID, IcbcConstants.SIGN_TYPE_RSA2, MY_PRIVATE_KEY, IcbcConstants.CHARSET_UTF8);
......@@ -76,12 +108,54 @@ public class HygfIcbcServiceImpl implements IHygfIcbcService {
out.write(client.buildPostForm(request));
out.write("</body>");
out.write("</html>");
} catch (Exception e) {
log.error(e.getMessage(),e);
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new BadRequest("报错了");
}
}
public HygfIcbcRecordDTO registerWalletCallback(HygfIcbcRecordDTO hygfIcbcRecordDTO) {
return this.createWithModel(hygfIcbcRecordDTO);
}
public HygfIcbcRecordDTO getObject(Long sequenceNbr) {
HygfIcbcRecordDTO hygfIcbcRecordDTO = this.queryBySeq(sequenceNbr);
return hygfIcbcRecordDTO;
}
public List<HygfIcbcRecordDTO> listObject(HygfIcbcRecordQueryDTO hygfIcbcRecordQueryDTO) {
List<HygfIcbcRecordDTO> list = hygfIcbcRecordMapper.listObject(hygfIcbcRecordQueryDTO);
return toModels(list);
}
public Page<HygfIcbcRecordDTO> queryForPage(int current, int size, HygfIcbcRecordQueryDTO hygfIcbcRecordQueryDTO) {
PageHelper.startPage(current, size);
// List<HygfIcbcRecord> hygfIcbcRecords = this.lambdaQuery().eq(StringUtils.isNotEmpty(hygfIcbcRecordQueryDTO.getOpenAccountState()), HygfIcbcRecord::getOpenAccountState, hygfIcbcRecordQueryDTO.getOpenAccountState()).like(StringUtils.isNotEmpty(hygfIcbcRecordQueryDTO.getCustName()), HygfIcbcRecord::getCustName, hygfIcbcRecordQueryDTO.getCustName()).like(StringUtils.isNotEmpty(hygfIcbcRecordQueryDTO.getIdCard()), HygfIcbcRecord::getIdCard, hygfIcbcRecordQueryDTO.getIdCard()).eq(StringUtils.isNotEmpty(hygfIcbcRecordQueryDTO.getPhone()), HygfIcbcRecord::getPhone, hygfIcbcRecordQueryDTO.getPhone()).list();
List<HygfIcbcRecordDTO> list = hygfIcbcRecordMapper.listObject(hygfIcbcRecordQueryDTO);
toModels(list);
PageInfo<HygfIcbcRecordDTO> pageInfo = new PageInfo<>(list);
Page<HygfIcbcRecordDTO> page = new Page<>();
page.setSize(pageInfo.getSize());
page.setCurrent(pageInfo.getPageNum());
page.setTotal(pageInfo.getTotal());
page.setRecords(list);
return page;
}
private List<HygfIcbcRecordDTO> toModels(List<HygfIcbcRecordDTO> hygfIcbcRecords) {
if (CollectionUtils.isEmpty(hygfIcbcRecords)) {
return Collections.emptyList();
}
List<String> amosUserIds = hygfIcbcRecords.stream().map(HygfIcbcRecordDTO::getAmosUserId).collect(Collectors.toList());
List<PeasantHousehold> peasantHouseholds = peasantHouseholdService.lambdaQuery().in(PeasantHousehold::getAmosUserId, amosUserIds).list();
Map<String, List<PeasantHousehold>> PeasantHouseholdMap = peasantHouseholds.stream().collect(Collectors.groupingBy(PeasantHousehold::getAmosUserId));// 根据农户 ID 分组
return hygfIcbcRecords.stream().map(hygfIcbcRecordDTO -> {
hygfIcbcRecordDTO.setOpenAccountStatusName(IcbcEnum.OpenAccountState.getNameByCode(hygfIcbcRecordDTO.getOpenAccountStatus(), IcbcEnum.OpenAccountState.INITIAL.getName()));
List<PeasantHousehold> peasantHouseholdList = PeasantHouseholdMap.get(hygfIcbcRecordDTO.getAmosUserId());
hygfIcbcRecordDTO.setPeasantHouseholds(Bean.toModels(peasantHouseholdList, HygfIcbcRecordDTO.IcbcPeasantHousehold.class));
return hygfIcbcRecordDTO;
}).collect(Collectors.toList());
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment