This commit is contained in:
wkc
2026-03-04 14:31:07 +08:00
commit 222e66552f
1480 changed files with 224148 additions and 0 deletions

76
ibs/pom.xml Normal file
View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId>
<version>3.8.8</version>
</parent>
<artifactId>ibs</artifactId>
<dependencies>
<!-- Mockito依赖 -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.3.3</version> <!-- 请根据需要选择合适的版本 -->
<scope>test</scope>
</dependency>
<!-- JUnit依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version> <!-- 请根据需要选择合适的版本 -->
<scope>test</scope>
</dependency>
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId>
</dependency>
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
<version>1.18.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.33</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId>
</dependency>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.2</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,74 @@
package com.ruoyi.ibs.app.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.ibs.app.domain.QyWxpropertiex;
import com.ruoyi.ibs.app.domain.UrlDTO;
import com.ruoyi.ibs.app.service.QYWeiXinManagerInfoService;
import com.ruoyi.ibs.app.service.WeiXinService;
import com.ruoyi.ibs.app.util.JsonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Lookup;
import org.springframework.web.bind.annotation.*;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
/**
* @author 600477
* @date 2023/11/9
*/
@Api(tags = "移动端企业微信相关服务")
@RequestMapping("/api/mobile/qy/weixin")
@RestController
public class QYWeiXinController {
@Autowired
private WeiXinService weiXinService;
@Autowired
private QYWeiXinManagerInfoService qyWeiXinManagerInfoService;
@Autowired
private QyWxpropertiex qyWeiXinProperties;
@ApiOperation(value = "获取企业微信服务器ip")
@GetMapping("/getIp")
public AjaxResult getIp(String orgId) {
return weiXinService.getIp(orgId);
}
@ApiOperation(value = "获取使用企业微信jdk的票据")
@GetMapping("/ticket")
public JsonResult getTicket(String qyUrl,String orgId) throws UnsupportedEncodingException {
String url = URLDecoder.decode(qyUrl, StandardCharsets.UTF_8.toString());
return weiXinService.getTicketVo2(url,orgId);
}
@ApiOperation(value = "获取企业微信用户客户经理相关信息")
@GetMapping("/userinfo")
@Log(title = "企业微信登录")
public AjaxResult getUserInfo(String code,String orgId) {
return qyWeiXinManagerInfoService.getQYWeiXinUserInfo( code,orgId );
}
@ApiOperation(value = "获取企业微信相关参数")
@GetMapping("/getQyApi")
public AjaxResult getQyApi(String orgId) {
return AjaxResult.success(qyWeiXinManagerInfoService.getQyApi2( orgId ));
}
@ApiOperation(value = "获取企业微信用户客户经理相关信息")
@GetMapping("/getLoginUser")
//生产要注解掉
public AjaxResult getLogin(@RequestParam String userName) {
return qyWeiXinManagerInfoService.getLogin( userName );
}
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.ibs.app.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class AccessTokenDTO {
/**
* 凭证
*/
@JsonProperty(value = "access_token")
private String accessToken;
/**
* 有效时间
*/
@JsonProperty(value = "expires_in")
private Integer expiresIn;
/**
* 错误码
*/
@JsonProperty(value = "errcode")
private Integer errCode;
/**
* 错误信息
*/
@JsonProperty(value = "errmsg")
private String errMsg;
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.ibs.app.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
@Data
public class IpDomain {
@JsonProperty(value = "ip_list")
List<String> ipList;
@JsonProperty(value = "errcode")
String errcode;
@JsonProperty(value = "errmsg")
String errmsg;
}

View File

@@ -0,0 +1,46 @@
package com.ruoyi.ibs.app.domain;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 企业微信用户身份
*
* @author 600477
* @date 2023/11/15
*/
@Data
public class QYUserDTO {
/**
* 错误码
*/
@JsonProperty(value = "errcode")
private Integer errCode;
/**
* 错误信息
*/
@JsonProperty(value = "errmsg")
private String errMsg;
/**
* 成员userId
*/
@JsonProperty(value = "userid")
private String userId;
/**
* 成员票据
*/
@JsonProperty(value = "user_ticket")
private String userTicket;
/**
* 企业微信accesstoken
*/
@JsonIgnore
private String accessToken;
}

View File

@@ -0,0 +1,44 @@
package com.ruoyi.ibs.app.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 企业用户详细信息
*
* @author 600477
* @date 2023/11/15
*/
@Data
public class QYUserDetailDTO {
/**
* 错误码
*/
@JsonProperty(value = "errcode")
private Integer errCode;
/**
* 错误信息
*/
@JsonProperty(value = "errmsg")
private String errMsg;
/**
* 成员userId
*/
@JsonProperty(value = "userid")
private String userId;
/**
* 手机号
*/
private String mobile;
/**
* 用户二维码
*/
@JsonProperty(value = "qr_code")
private String qrCode;
}

View File

@@ -0,0 +1,28 @@
package com.ruoyi.ibs.app.domain;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 企业微信 配置参数类
*
* @author 600477
* @date 2023/11/09
*/
@Data
@Component
@ConfigurationProperties(prefix = "qywx")
public class QyWxpropertiex {
private String address;
private String appId;
private String secret;
private Integer agentId;
private String ticketUrl;
}

View File

@@ -0,0 +1,12 @@
package com.ruoyi.ibs.app.domain;
import lombok.Data;
@Data
public class QywxOrg {
String orgId;
String appId;
String secret;
String agentId;
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.ibs.app.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* @author 600477
* @date 2023/11/9
*/
@Data
public class TicketDTO {
/**
* 错误码
*/
@JsonProperty(value = "errcode")
private Integer errCode;
/**
* 错误信息
*/
@JsonProperty(value = "errmsg")
private String errMsg;
/**
* 临时票据
*/
private String ticket;
/**
* 有效时长
*/
@JsonProperty(value = "expires_in")
private Integer expiresIn;
}

View File

@@ -0,0 +1,28 @@
package com.ruoyi.ibs.app.domain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author 600477
* @date 2023/11/9
*/
@Data
@ApiModel(description = "签名数据")
public class TicketVO {
@ApiModelProperty(value = "应用id", name = "appId")
private String appId;
@ApiModelProperty(value = "生成签名的时间戳", name = "timestamp")
private Long timestamp;
@ApiModelProperty(value = "生成签名的随机串", name = "nonceStr")
private String nonceStr;
@ApiModelProperty(value = "签名", name = "signature")
private String signature;
private String agentId;
}

View File

@@ -0,0 +1,9 @@
package com.ruoyi.ibs.app.domain;
import lombok.Data;
@Data
public class UrlDTO {
String qyUrl;
}

View File

@@ -0,0 +1,9 @@
package com.ruoyi.ibs.app.mapper;
import com.ruoyi.ibs.app.domain.QywxOrg;
public interface QYWeiXinMapper {
QywxOrg getQywxOrg(String orgId);
QywxOrg getQywxOrg2(String orgId);
}

View File

@@ -0,0 +1,31 @@
package com.ruoyi.ibs.app.service;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.ibs.app.domain.QywxOrg;
import com.ruoyi.ibs.app.util.JsonResult;
/**
* 企业微信客户经理服务
*
* @author 600477
* @date 2023/11/15
*/
public interface QYWeiXinManagerInfoService {
/**
* 获取企业用户关联客户经理信息
*
* @param code 企业微信授权码
*
* @return
*/
AjaxResult getQYWeiXinUserInfo(String code,String orgId);
AjaxResult getLogin(String userName);
QywxOrg getQyApi(String orgId);
QywxOrg getQyApi2(String orgId);
}

View File

@@ -0,0 +1,17 @@
package com.ruoyi.ibs.app.service;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ibs.app.domain.QYUserDTO;
import com.ruoyi.ibs.app.domain.QYUserDetailDTO;
import com.ruoyi.ibs.app.util.JsonResult;
public interface WeiXinService {
JsonResult<QYUserDTO> getQYUser(String code,String appId,String secret,String orgId);
JsonResult<QYUserDetailDTO> getQYUserDetail(QYUserDTO data);
JsonResult getTicketVo2(String qyUrl,String orgId);
AjaxResult getIp(String orgId);
}

View File

@@ -0,0 +1,175 @@
package com.ruoyi.ibs.app.service.impl;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory;
import com.ruoyi.framework.security.context.AuthenticationContextHolder;
import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.framework.web.service.SysPermissionService;
import com.ruoyi.ibs.app.domain.QYUserDTO;
import com.ruoyi.ibs.app.domain.QYUserDetailDTO;
import com.ruoyi.ibs.app.domain.QywxOrg;
import com.ruoyi.ibs.app.mapper.QYWeiXinMapper;
import com.ruoyi.ibs.app.service.QYWeiXinManagerInfoService;
import com.ruoyi.ibs.app.service.WeiXinService;
import com.ruoyi.ibs.app.util.Constants;
import com.ruoyi.ibs.app.util.JsonResult;
import com.ruoyi.ibs.app.util.RedisUtil;
import com.ruoyi.system.mapper.SysUserMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import com.ruoyi.framework.web.service.TokenService;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.UUID;
/**
* @author 600477
* @date 2023/11/15
*/
@Slf4j
@Service
public class QYWeiXinManagerInfoServiceImpl implements QYWeiXinManagerInfoService {
@Autowired
private WeiXinService weiXinService;
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
private RedisUtil redisUtil;
@Autowired
private TokenService tokenService;
@Autowired
private SysPermissionService permissionService;
@Autowired
private SysLoginService sysLoginService;
@Autowired
private QYWeiXinMapper qyWeiXinMapper;
@Override
public AjaxResult getQYWeiXinUserInfo(String code,String orgId) {
QywxOrg qywxOrg = qyWeiXinMapper.getQywxOrg(orgId);
//获取企业微信用户信息
JsonResult<QYUserDTO> qyUserResult = weiXinService.getQYUser( code,qywxOrg.getAppId(),qywxOrg.getSecret(),orgId );
if (!Constants.OK.equals( qyUserResult.getCode() )) {
return AjaxResult.error( Constants.FAILURE, qyUserResult.getMessage() );
}
//获取企业微信用户详细信息
JsonResult<QYUserDetailDTO> qyUserDetailResult = weiXinService.getQYUserDetail( qyUserResult.getData() );
if (!Constants.OK.equals( qyUserDetailResult.getCode() )) {
return AjaxResult.error( Constants.FAILURE, qyUserDetailResult.getMessage() );
}
QYUserDetailDTO qyUserDetailDTO = qyUserDetailResult.getData();
log.info(qyUserDetailResult.getData().toString());
String userName = sysUserMapper.selectOneByNum( qyUserDetailDTO.getMobile() );
if (userName == null ) {
return AjaxResult.error( Constants.FAILURE, "客户经理信息不存在" );
}
SysUser sysUser = sysUserMapper.selectUserByUserName( userName );
// UsernamePasswordAuthenticationToken token = null;
Authentication token = null;
if (sysUser == null) {
return AjaxResult.error("客户经理信息不存在");
}
AjaxResult ajax = AjaxResult.success();
try{
UserDetails userDetails = new LoginUser(sysUser.getUserId(),sysUser.getDeptId(),sysUser,permissionService.getMenuPermission(sysUser));
token = new UsernamePasswordAuthenticationToken(userDetails,null, AuthorityUtils.createAuthorityList("ROLE_USER"));
AuthenticationContextHolder.setContext(token);
SecurityContextHolder.getContext().setAuthentication(token);
}
catch (Exception e){
if (e instanceof BadCredentialsException){
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName,"failed", "login.failed"));
throw new UserPasswordNotMatchException();
}else {
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName,"failed", e.getMessage()));
throw new ServiceException(e.getMessage());
}
}
finally {
AuthenticationContextHolder.clearContext();
}
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName,"sucess", "login.sucess"));
LoginUser loginUser = (LoginUser) token.getPrincipal();
sysLoginService.recordLoginInfo(sysUser.getUserId());
String userToken = tokenService.createToken(loginUser);
ajax.put(Constants.QY_WEI_XIN_ACCESS_TOKEN_KEY,userToken);
return ajax;
}
@Override
public AjaxResult getLogin(String userName) {
SysUser sysUser = sysUserMapper.selectUserByUserName( userName );
// UsernamePasswordAuthenticationToken token = null;
Authentication token = null;
if (sysUser == null) {
return AjaxResult.error("客户经理信息不存在");
}
AjaxResult ajax = AjaxResult.success();
try{
UserDetails userDetails = new LoginUser(sysUser.getUserId(),sysUser.getDeptId(),sysUser,permissionService.getMenuPermission(sysUser));
token = new UsernamePasswordAuthenticationToken(userDetails,null, AuthorityUtils.createAuthorityList("ROLE_USER"));
AuthenticationContextHolder.setContext(token);
SecurityContextHolder.getContext().setAuthentication(token);
}
catch (Exception e){
if (e instanceof BadCredentialsException){
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName,"failed", "login.failed"));
throw new UserPasswordNotMatchException();
}else {
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName,"failed", e.getMessage()));
throw new ServiceException(e.getMessage());
}
}
finally {
AuthenticationContextHolder.clearContext();
}
// UserDetails userDetails = userDetailsService.loadUserByUsername(userName);
// UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(userDetails.getUsername(), userDetails.getPassword());
// Authentication authentication = authenticationManager.authenticate(token);
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName,"sucess", "login.sucess"));
LoginUser loginUser = (LoginUser) token.getPrincipal();
System.out.println("--------------");
System.out.println(SecurityUtils.getLoginUser());
System.out.println("--------------");
sysLoginService.recordLoginInfo(sysUser.getUserId());
String userToken = tokenService.createToken(loginUser);
// redisUtil.set(userToken,loginUser,120);
ajax.put(Constants.QY_WEI_XIN_ACCESS_TOKEN_KEY,userToken);
return ajax;
}
@Override
public QywxOrg getQyApi(String orgId) {
return qyWeiXinMapper.getQywxOrg(orgId);
}
@Override
public QywxOrg getQyApi2(String orgId) {
return qyWeiXinMapper.getQywxOrg2(orgId);
}
}

View File

@@ -0,0 +1,236 @@
package com.ruoyi.ibs.app.service.impl;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ibs.app.domain.*;
import com.ruoyi.ibs.app.mapper.QYWeiXinMapper;
import com.ruoyi.ibs.app.service.WeiXinService;
import com.ruoyi.ibs.app.util.Constants;
import com.ruoyi.ibs.app.util.JsonResult;
import com.ruoyi.ibs.app.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.client.RestTemplate;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Slf4j
@Service
public class WeiXinServiceImpl implements WeiXinService {
@Autowired
private QyWxpropertiex qyWeiXinProperties;
@Autowired
private RestTemplate restTemplate;
@Autowired
private RedisUtil redisUtil;
@Autowired
private QYWeiXinMapper qyWeiXinMapper;
public static final String URL_KEY_VALUE = "jsapi_ticket=%s&noncestr=%s&timestamp=%s&url=%s";
private JsonResult<String> getAccessToken(boolean isRefresh, String redisKey, String url,String orgId) {
String token = redisUtil.get( redisKey+orgId );
if (isRefresh || StringUtils.isEmpty( token )) {
//获取access_token
AccessTokenDTO accessTokenDTO = restTemplate.getForObject( url, AccessTokenDTO.class );
log.info( accessTokenDTO.toString() );
if (accessTokenDTO.getErrCode() == null || accessTokenDTO.getErrCode() == 0) {
token = accessTokenDTO.getAccessToken();
//redis缓存access_token
redisUtil.setStr( redisKey+orgId, token, accessTokenDTO.getExpiresIn() );
return JsonResult.success( token );
} else {
log.error( "获取access_token失败," + accessTokenDTO );
return JsonResult.error( Constants.FAILURE, "获取access_token失败" );
}
}
return JsonResult.success( token );
}
/**
* 构件 TicketVO
*
* @param ticket
* @param appId
*
* @return
*/
public JsonResult buildTicketVO(String ticket, String appId, String qyUrl,String agentId) {
String nonceStr = UUID.randomUUID().toString().replace( "-", "" );
long timestamp = System.currentTimeMillis() / 1000;
String url = String.format( URL_KEY_VALUE, ticket, nonceStr, timestamp, qyUrl );
String signature;
try {
signature = signature( url );
} catch (NoSuchAlgorithmException e) {
log.error( "签名算法异常" + e.getMessage() );
return JsonResult.error( Constants.FAILURE, "签名算法异常" );
}
TicketVO ticketVO = new TicketVO();
ticketVO.setAppId( appId );
ticketVO.setNonceStr( nonceStr );
ticketVO.setTimestamp( timestamp );
ticketVO.setSignature( signature );
ticketVO.setAgentId(agentId);
return JsonResult.success( ticketVO );
}
/**
* 对字符串进行sha1签名
*
* @param str
*
* @return
*
* @throws NoSuchAlgorithmException
*/
private String signature(String str) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance( "SHA-1" );
byte[] messageDigest = md.digest( str.getBytes() );
BigInteger bigInteger = new BigInteger( 1, messageDigest );
String hasText = bigInteger.toString( 16 );
while (hasText.length() < 32) {
hasText = "0" + hasText;
}
return hasText;
}
/**
* 获取ticket
*
* @param token access_token
* @param ticketKey ticket redis key
* @param url ticket api url
* @param accessKey 重新刷新获取access_token redis key
* @param accessUrl 重新刷新获取access_token url
*
* @return
*/
private JsonResult<String> getTicket(String token, String ticketKey, String url, String accessKey, String accessUrl,String orgId) {
String ticketValue = redisUtil.get( ticketKey+orgId );
if (StringUtils.isEmpty( ticketValue )) {
TicketDTO ticketDTO = restTemplate.getForObject( url, TicketDTO.class, token );
log.info( ticketDTO.toString() );
if (ticketDTO.getErrCode() == 0) {
ticketValue = ticketDTO.getTicket();
//redis缓存ticket
redisUtil.setStr( ticketKey+orgId, ticketValue, ticketDTO.getExpiresIn() );
} else if (ticketDTO.getErrCode() == 40001) {
// token过期重新获取
JsonResult<String> accessTokenResult = getAccessToken( true, accessKey, accessUrl,orgId );
ticketDTO = restTemplate.getForObject( url, TicketDTO.class, accessTokenResult.getData() );
ticketValue = ticketDTO.getTicket();
//redis缓存ticket
redisUtil.setStr( ticketKey+orgId, ticketValue, ticketDTO.getExpiresIn() );
} else {
log.error( "获取ticket失败," + ticketDTO );
return JsonResult.error( Constants.FAILURE, "获取ticket失败" );
}
}
return JsonResult.success( ticketValue );
}
/**
* 获取企业用户详细信息
*
* @param code 企业微信授权码,只能消费一次,并且五分钟内有效
*
* @return
*/
@Override
public JsonResult<QYUserDTO> getQYUser(String code,String appId,String secret,String orgId) {
String url = String.format( qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_ACCESS_TOKEN,appId, secret );
JsonResult<String> accessTokenResult = getAccessToken( false, Constants.QY_WEI_XIN_ACCESS_TOKEN_KEY, url,orgId );
if (!Constants.OK.equals( accessTokenResult.getCode() )) {
return JsonResult.error( Constants.FAILURE, accessTokenResult.getMessage() );
}
String accessToken = accessTokenResult.getData();
//获取访问用户身份
QYUserDTO qyUserDTO = restTemplate.getForObject( qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_USER_INFO, QYUserDTO.class, accessToken, code );
if (( qyUserDTO != null ? qyUserDTO.getErrCode() : null ) == 40001) {
//token过期,重新获取token
JsonResult<String> newAccessTokenResult = getAccessToken( true, Constants.QY_WEI_XIN_ACCESS_TOKEN_KEY, url,orgId );
accessToken = newAccessTokenResult.getData();
qyUserDTO = restTemplate.getForObject( qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_USER_INFO, QYUserDTO.class, accessToken, code );
} else if (( qyUserDTO != null ? qyUserDTO.getErrCode() : null ) != 0) {
log.error( "获取企业微信用户身份失败," + qyUserDTO );
return JsonResult.error( Constants.FAILURE, "获取企业微信用户身份失败" );
}
if (qyUserDTO != null) {
qyUserDTO.setAccessToken( accessToken );
}
log.info( qyUserDTO.toString() );
return JsonResult.success( qyUserDTO );
}
@Override
public JsonResult<QYUserDetailDTO> getQYUserDetail(QYUserDTO qyUserDTO) {
Map<String, String> body = new HashMap<>();
body.put( "user_ticket", qyUserDTO.getUserTicket() );
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType( MediaType.APPLICATION_JSON );
//获取访问用户详细敏感信息
ResponseEntity<QYUserDetailDTO> responseEntity = restTemplate
.exchange( qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_USER_DETAIL, HttpMethod.POST, new HttpEntity<>( body, httpHeaders ), QYUserDetailDTO.class,
qyUserDTO.getAccessToken() );
QYUserDetailDTO qyUserDetailDTO = responseEntity.getBody();
if (qyUserDetailDTO != null && qyUserDetailDTO.getErrCode() == 0) {
return JsonResult.success( qyUserDetailDTO );
}
log.error( "获取企业微信用户敏感信息失败," + qyUserDetailDTO );
return JsonResult.error( Constants.FAILURE, "获取企业微信用户敏感信息失败" );
}
@Override
public JsonResult getTicketVo2(String qyUrl,String orgId) {
QywxOrg qywxOrg = qyWeiXinMapper.getQywxOrg(orgId);
String url = String.format( qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_ACCESS_TOKEN, qywxOrg.getAppId(), qywxOrg.getSecret() );
JsonResult<String> accessTokenResult = getAccessToken( false, Constants.WEI_XIN_ACCESS_TOKEN_KEY, url,orgId );
if (!Constants.OK.equals( accessTokenResult.getCode() )) {
return accessTokenResult;
}
JsonResult<String> ticketValueResult =
getTicket( accessTokenResult.getData(), Constants.QY_WEI_XIN_TICKET_KEY, qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_JSAPI_TICKET,
Constants.WEI_XIN_ACCESS_TOKEN_KEY, url,orgId );
if (!Constants.OK.equals( ticketValueResult.getCode() )) {
return ticketValueResult;
}
System.out.println("------------------------------------");
System.out.println(ticketValueResult);
System.out.println("------------------------------------");
System.out.println(ticketValueResult.getData());
System.out.println("------------------------------------");
System.out.println(qyUrl);
System.out.println("------------------------------------");
return buildTicketVO( ticketValueResult.getData(), qywxOrg.getAppId(), qyUrl ,qywxOrg.getAgentId());
}
public AjaxResult getIp(String orgId) {
QywxOrg qywxOrg = qyWeiXinMapper.getQywxOrg(orgId);
String url = String.format( qyWeiXinProperties.getAddress() + Constants.QY_WEI_XIN_ACCESS_TOKEN, qywxOrg.getAppId(), qywxOrg.getSecret() );
JsonResult<String> accessTokenResult = getAccessToken( false, Constants.WEI_XIN_ACCESS_TOKEN_KEY, url,orgId );
IpDomain ipDomain = restTemplate.getForObject( qyWeiXinProperties.getAddress()+Constants.QY_WEI_XIN_API_IP,IpDomain.class,accessTokenResult.getData());
return AjaxResult.success(ipDomain);
}
}

View File

@@ -0,0 +1,114 @@
package com.ruoyi.ibs.app.util;
/**
* @author 600477
* @date 2023/10/8
*/
public class Constants {
public static final String OK = "00000000";
public static final String FAILURE = "99999999";
// public static final String AUTHORIZATION_HEADER = "X-Cloud-Token";
//
// public static final String TOKEN_BEARER = "Bearer ";
//
// public static final String AUTHORITIES_KEY = "auth";
// /**
// * @description: Redis缓存自增进件单号
// */
// public static final String ORDER_NUM = "dkfz_lh_orderNum";
//
// /**
// * @description: Redis缓存报告序号
// */
// public static final String REPORT_NUM = "reportNum";
//
// public static final String TOKEN_SIGN_KEY = "mx+MGX+w9TtUhP8UIE8g9xqFRWflrTWAtytlnN3bbj8Z6p//ITaVCVuBt89I75TKIDpxVlskwQJm436tO0bbsA==";
//
// /**
// * oss上传路径
// */
// public static final String OSS_UPLOAD_PATH = "loans-improve/";
// public static final String REPORT_ATTACHMENT_UPLOAD_PATH = OSS_UPLOAD_PATH + "attachment/";
//
// public static final String OSS_UPLOAD_INCOME_SITUATION = "loans-income-situation/";
//
// public static final String INCOMING_NOT_EXIST = "该进件单号不存在关联的进件!";
// public static final String USER_NOT_LOGIN = "用户未登陆!";
// public static final String USER_PERMISSIONS_DENIED = "当前用户权限不足!";
// public static final String PROCESS_STATUS_ERROR = "当前流程状态异常!";
// public static final String INCOMING_STATUS_ERROR = "当前进件状态异常,请检查当前进件状态!";
// public static final String RESOURCE_NOT_EXIST = "资源不存在";
// public static final String UPDATE_FAILED = "更新失败!";
//
// public static final String ADMIN_ROLE = "贷款特色辅助系统-系统管理岗";
// public static final String APPROVE_ROLE = "贷款特色辅助系统-审批岗";
/**
* 微信接口地址获取access_toekn
*/
public static final String WEI_XIN_ACCESS_TOKEN = "/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";
/**
* 微信接口地址,获取jsapi_ticket
*/
public static final String WEI_XIN_JSAPI_TICKET = "/cgi-bin/ticket/getticket?access_token={1}&type=jsapi";
/**
* 微信redis缓存key\dkfz_weixin_toekn改为szzh_weixin_toekn
* 下同
*/
public static final String WEI_XIN_ACCESS_TOKEN_KEY = "szzh_weixin_token";
public static final String WEI_XIN_TICKET_KEY = "szzh_weixin_ticket";
public static final String QY_WEI_XIN_API_IP = "/cgi-bin/getcallbackip?access_token={1}";
/**
* 企业微信接口地址获取access_toekn
*/
public static final String QY_WEI_XIN_ACCESS_TOKEN = "/cgi-bin/gettoken?corpid=%s&corpsecret=%s";
/**
* 企业微信接口地址,获取jsapi_ticket
*/
public static final String QY_WEI_XIN_JSAPI_TICKET = "/cgi-bin/get_jsapi_ticket?access_token={1}";
/**
* 企业微信接口发送
*/
public static final String QY_WEI_XIN_MESSAGE_SEND = "/cgi-bin/message/send?access_token={1}";
/**
* 企业微信redis缓存key\dkfz_qyweixin_toekn改为szzh_qyweixin_toekn
* 下同
*/
public static final String QY_WEI_XIN_ACCESS_TOKEN_KEY = "szzh_qyweixin_token";
public static final String QY_WEI_XIN_TICKET_KEY = "szzh_qyweixin_ticket";
/**
* 企业微信接口地址,获取用户身份
*/
public static final String QY_WEI_XIN_USER_INFO = "/cgi-bin/auth/getuserinfo?access_token={1}&code={2}";
/**
* 企业微信接口地址,获取用户详细信息
*/
public static final String QY_WEI_XIN_USER_DETAIL = "/cgi-bin/auth/getuserdetail?access_token={1}";
// /**
// * 贷款类型临界值 大于该金额是大额 ,小于是小额
// */
// public static final Double LOAN_LIMIT = 300000.00;
//
public static final String LAST_LIMIT = "limit 1";
//
// /**
// * 待处理进件提醒配置 redis key
// */
// public static final String ALERT_SETTING_KEY = "dkfz_lh_alert";
public static final Integer YES = 1;
public static final Integer NO = 0;
// public static final String NEW_FOR_OLD = "资金周转(借新还旧)";
}

View File

@@ -0,0 +1,97 @@
package com.ruoyi.ibs.app.util;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
/**
* 统一返回类型
*
* @author yjb
*/
@Data
@ToString
public class JsonResult<T> implements Serializable {
private static final long serialVersionUID = -2792556188993845048L;
@ApiModelProperty(value = "状态码,00000000:成功,99999999:异常", name = "code")
private String code;
@ApiModelProperty(value = "异常信息", name = "message")
private String message;
private T data;
public JsonResult() {
}
public JsonResult(final String code, final String message, final T data) {
this.code = code;
this.message = message;
this.data = data;
}
public static <T> JsonResult<T> success() {
return success( "执行完成", null );
}
public static <T> JsonResult<T> success(final T data) {
return success( null, data );
}
public static <T> JsonResult<T> success(final String msg, final T data) {
return get( Constants.OK, msg, data );
}
public static <T> JsonResult<T> error(final String code, final String msg) {
return get( code, msg, null );
}
public static <T> JsonResult<T> error(final String msg) {
return get( Constants.FAILURE, msg, null );
}
public static <T> JsonResult<T> error(final String msg, final T data) {
return get( Constants.FAILURE, msg, data );
}
private static <T> JsonResult<T> get(final String code, final String msg, final T data) {
return new JsonResult<T>( code, msg, data );
}
@Override
public String toString() {
return "JsonResult{" + "code=" + code + ", message='" + message + '\'' + ", data=" + data + '}';
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
JsonResult<?> that = (JsonResult<?>) o;
if (code != null ? !code.equals( that.code ) : that.code != null) {
return false;
}
if (message != null ? !message.equals( that.message ) : that.message != null) {
return false;
}
return data != null ? data.equals( that.data ) : that.data == null;
}
@Override
public int hashCode() {
int result = code != null ? code.hashCode() : 0;
result = 31 * result + ( message != null ? message.hashCode() : 0 );
result = 31 * result + ( data != null ? data.hashCode() : 0 );
return result;
}
}

View File

@@ -0,0 +1,147 @@
package com.ruoyi.ibs.app.util;
import com.ruoyi.common.exception.ServiceException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
/**
* @author 604343
* @description: redis工具类
* @date 2023/10/30 8:56
*/
@Component
public final class RedisUtil {
@Resource
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private StringRedisTemplate stringRedisTemplate;
/**
* @return true成功
*
* @description: 普通缓存放入并设置时间
* @author dz
* @param: time 时间
*/
public boolean set(String key, Object value, long time) {
try {
if (time > 0) {
redisTemplate.opsForValue().set( key, value, time, TimeUnit.HOURS );
} else {
redisTemplate.opsForValue().set( key, value );
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* @return true成功
*
* @description: 普通缓存放入并设置时间
* @author dz
* @param: time 时间
*/
public boolean setStr(String key, String value, long time) {
try {
if (time > 0) {
stringRedisTemplate.opsForValue().set( key, value, time, TimeUnit.SECONDS );
} else {
stringRedisTemplate.opsForValue().set( key, value );
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* @return true成功
*
* @description: 普通缓存放入并设置时间
* @author dz
* @param: time 时间
*/
public boolean setStr(String key, String value, long time, TimeUnit timeUnit) {
try {
if (time > 0) {
stringRedisTemplate.opsForValue().set( key, value, time, timeUnit );
} else {
stringRedisTemplate.opsForValue().set( key, value );
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**'
* 删除key
* @param key
* @return
*/
public boolean removeKey(String key){
if (key==null||key.isEmpty()){
throw new ServiceException( "key不能为空" );
}
return stringRedisTemplate.delete(key);
}
/**
* 设置失效时间
* @param key
* @param time
* @param timeUnit
* @return
*/
public boolean setExpire(String key, long time, TimeUnit timeUnit){
if (key==null||key.isEmpty()){
throw new ServiceException( "key不能为空" );
}
if (timeUnit==null){
throw new ServiceException( "时间单位不能为空" );
}
return stringRedisTemplate.expire(key, time, timeUnit);
}
/**
* @description: 递增
* @param: key: 键 delta: 间距(要增加几)
* @return
*/
public Long incr(String key,long time) {
//没有这个键就初始化这个键并设置过期时间
stringRedisTemplate.expire( key, 24, TimeUnit.HOURS );
// String a =redisTemplate.opsForValue().get(key).toString();
// if(redisTemplate.opsForValue().get(key)==null){
// redisTemplate.opsForValue().set( key,1,time,TimeUnit.HOURS );
// return Long.parseLong( String.valueOf( redisTemplate.opsForValue().get( key ) ) );
// }
return stringRedisTemplate.opsForValue().increment( key, 1 );
}
/**
* @description: 获取键值对
* @param: key键
* @return 值
*/
public String get(String key) {
return stringRedisTemplate.opsForValue().get( key );
}
}

View File

@@ -0,0 +1,41 @@
package com.ruoyi.ibs.audio.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ibs.audio.domain.AudioUploadDTO;
import com.ruoyi.ibs.audio.service.AudioService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @Author 吴凯程
* @Date 2025/11/21
**/
@Api(tags = "语音转文字接口")
@RequestMapping("/audio")
@RestController
public class AudioController extends BaseController {
@Resource
private AudioService audioService;
@PostMapping("/upload")
@ApiOperation("上传语音接口")
public AjaxResult uploadAudio(AudioUploadDTO audioUploadDTO) {
return AjaxResult.success(audioService.uploadAudioAnalysis(audioUploadDTO));
}
@GetMapping("/get")
@ApiOperation("获取语音转文字结果")
public AjaxResult getRadioAnalysis(@RequestParam String uuid) {
String audioAnalysis = audioService.getAudioAnalysis(uuid);
if (audioAnalysis.equals(AudioService.AUDIO_ERROR_CODE)) {
return AjaxResult.error("语音转文字失败");
}
return AjaxResult.success(audioAnalysis);
}
}

View File

@@ -0,0 +1,17 @@
package com.ruoyi.ibs.audio.domain;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* @Author 吴凯程
* @Date 2025/11/21
**/
@Configuration
@Data
@ConfigurationProperties(prefix = "audio")
public class AudioProperties {
private String url;
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.ibs.audio.domain;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
/**
* @Author 吴凯程
* @Date 2025/11/21
**/
@Data
public class AudioUploadDTO {
private MultipartFile file;
}

View File

@@ -0,0 +1,111 @@
package com.ruoyi.ibs.audio.service;
import com.fasterxml.jackson.databind.JsonNode;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.ibs.audio.domain.AudioProperties;
import com.ruoyi.ibs.audio.domain.AudioUploadDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.*;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
/**
* @Author 吴凯程
* @Date 2025/11/21
**/
@Service
@EnableAsync
@Slf4j
public class AudioService {
public static final String AUDIO_ERROR_CODE = "---";
public static final String AUDIO_WAIT_CODE = "000";
private static final String TASK_ID_PREFIX = "AUDIO_RECO_";
@Resource
private RestTemplate restTemplate;
@Resource
private RedisCache redisCache;
@Resource
private AudioProperties audioProperties;
public String uploadAudioAnalysis(AudioUploadDTO audioUploadDTO) {
if (!checkFileType(audioUploadDTO.getFile(), ".mp3")){
throw new ServiceException("文件类型错误: 只能上传mp3格式");
}
String uuid = IdUtils.fastSimpleUUID();
uploadAudioAnalysis(TASK_ID_PREFIX + uuid, audioUploadDTO.getFile());
return uuid;
}
public String getAudioAnalysis(String uuid) {
if (redisCache.hasKey(TASK_ID_PREFIX + uuid)){
return redisCache.getCacheObject(TASK_ID_PREFIX + uuid);
}
return AUDIO_ERROR_CODE;
}
@Async
public void uploadAudioAnalysis(String taskId, MultipartFile file) {
redisCache.setCacheObjectToEndDay(taskId, AUDIO_WAIT_CODE);
JsonNode response = null;
try{
File audio = File.createTempFile(taskId, ".mp3");
file.transferTo(audio);
response = postRequestWithFile(audioProperties.getUrl(), "audio", audio);
audio.delete();
} catch (Exception e){
log.error("语音转文字失败", e);
redisCache.setCacheObjectToEndDay(taskId, AUDIO_ERROR_CODE);
}
if(response.get("code").asInt() != 0){
log.error("语音转文字失败", response);
redisCache.setCacheObjectToEndDay(taskId, AUDIO_ERROR_CODE);
}
redisCache.setCacheObject(taskId, response.get("text").toString().replace("\"", "").replace("'", ""));
}
private Boolean checkFileType(MultipartFile file, String type){
String fileName = file.getOriginalFilename();
if (fileName != null && fileName.contains(".")) {
int lastDotIndex = fileName.lastIndexOf(".");
String fileSuffix = fileName.substring(lastDotIndex);
if (type.equals(fileSuffix)){
return Boolean.TRUE;
}
}
return Boolean.FALSE;
}
private JsonNode postRequestWithFile(String url, String fileName, File file){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, Object> multipartBody = new LinkedMultiValueMap<>();
multipartBody.add(fileName, new FileSystemResource(file));
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(multipartBody, headers);
ResponseEntity<JsonNode> response = restTemplate.exchange(
url,
HttpMethod.POST,
requestEntity,
JsonNode.class
);
log.info(String.valueOf(response.getBody()));
return response.getBody();
}
}

View File

@@ -0,0 +1,42 @@
package com.ruoyi.ibs.cmpm.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ibs.cmpm.service.GridCmpmCustService;
import com.ruoyi.ibs.cmpm.service.GridCmpmService;
import com.ruoyi.ibs.customerselect.domain.CustBaseInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* @Author 吴凯程
* @Date 2025/10/20
**/
@Api(tags = "绩效网格")
@RestController
@RequestMapping("/grid/cmpm")
public class GridCmpmController extends BaseController {
@Resource
private GridCmpmCustService gridCmpmCustService;
@Resource
private GridCmpmService gridCmpmService;
@PostMapping("/custBaseInfo/list")
@ApiOperation("我的客户绩效网格查询")
public AjaxResult selectCustBaseInfoList(@RequestBody CustBaseInfo custBaseInfo) {
return AjaxResult.success( gridCmpmCustService.selectCustInfoRetailList (custBaseInfo)) ;
}
@GetMapping("/cust/list/tag")
@ApiOperation("查询客户分层等级下拉框")
@ApiImplicitParam(name = "gridType", value = "零售retail 对公corporate 对公账户corporate_account", required = true, dataType = "String")
public AjaxResult custLevelListTag(@RequestParam String gridType) {
return success(gridCmpmService.getAllCustLevel(gridType));
}
}

View File

@@ -0,0 +1,35 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/11/21
**/
@Data
public class CustInfoDTO {
private String custType;
private String deptCode;
private String userName;
private String custId;
private String custName;
private String custLevel;
private List<Long> regionTopGridIds;
private List<Long> regionSecGridIds;
private List<Long> virtualGridIds;
private List<Long> drawGridIds;
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/31
**/
@Data
public class CustLevelDTO {
/** 移交客户号 */
@ApiModelProperty(value = "客户号",notes = "")
private String custId ;
/** 移交客户账号 */
@ApiModelProperty(value = "客户账号",notes = "")
private String accountNo ;
@ApiModelProperty(value = "客戶類型 0個人 1商戶 2企業",notes = "")
private String custType;
private String gridType;
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class CustManagerDTO {
@ApiModelProperty(value = "客户星级",notes = "")
private String custLevel;
@ApiModelProperty(value = "柜员号",notes = "")
private String managerId;
@ApiModelProperty(value = "网点号",notes = "")
private String outletId;
@ApiModelProperty(value = "网点名",notes = "")
private String branchId;
}

View File

@@ -0,0 +1,24 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/11/17
**/
@Data
public class GridCmpmAdjustDTO {
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporate_account",notes = "")
private String gridType;
private String deptCode;
/** 客户号 */
@ApiModelProperty(value = "客户信息",notes = "")
private List<TransferCustDTO> custList ;
private String userName;
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/10/27
**/
@Data
public class GridCmpmApproveDTO {
private List<Long> idList;
private Boolean approveResult;
}

View File

@@ -0,0 +1,17 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/10/28
**/
@Data
public class GridCmpmBranchDTO {
private Long branchId;
private List<String> custIdList;
}

View File

@@ -0,0 +1,24 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/10/27
**/
@Data
public class GridCmpmClaimDTO {
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporate_account",notes = "")
private String gridType ;
/** 移交客户号 */
@ApiModelProperty(value = "移交客户信息",notes = "")
private List<TransferCustDTO> custList ;
/** 新客户经理柜员号 */
@ApiModelProperty(value = "新客户经理柜员号",notes = "")
private String userName ;
}

View File

@@ -0,0 +1,44 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/10/15
**/
@Data
public class GridCmpmListDTO {
@ApiModelProperty(value = "网格类型 零售retail 对公corporate 对公账户对公corporate_account",notes = "")
private String gridType;
/** 客户号 */
@ApiModelProperty(name = "客户号",notes = "")
private String custId ;
/** 客户姓名 */
@ApiModelProperty(name = "客户姓名",notes = "")
private String custName ;
/** 客户姓名 */
@ApiModelProperty(name = "客户类型",notes = "")
private List<String> custTypes ;
/** 客户层级 */
@ApiModelProperty(name = "客户层级",notes = "")
private List<String> custLevels ;
/** 客户经理柜员号 */
@ApiModelProperty(name = "客户经理柜员号",notes = "")
private String userName ;
/** 客户经理柜员号 */
@ApiModelProperty(name = "用户柜员号",notes = "")
private String curUserName ;
/** 网点机构号 */
@ApiModelProperty(name = "网点机构号",notes = "")
private Long outletId ;
/** 支行机构号 */
@ApiModelProperty(name = "支行机构号",notes = "")
private Long branchId ;
}

View File

@@ -0,0 +1,30 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/10/20
**/
@Data
public class GridCmpmTransferDTO {
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporate_account",notes = "")
private String gridType ;
/** 移交客户号 */
@ApiModelProperty(value = "移交客户信息",notes = "")
private List<TransferCustDTO> custList ;
/** 原客户经理柜员号 */
@ApiModelProperty(value = "原客户经理柜员号",notes = "")
private String prevUserName ;
/** 新客户经理柜员号 */
@ApiModelProperty(value = "新客户经理柜员号",notes = "")
private String nextUserName ;
@ApiModelProperty(value = "是否全部移交",notes = "")
private Boolean isFullTransfer ;
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/20
**/
@Data
public class GridCmpmTransferListDTO {
/** 移交客户信息 */
@ApiModelProperty(value = "移交客户信息",notes = "")
private String keyword;
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporate_account",notes = "")
private String gridType ;
private String userRole;
private Long deptId;
private String userName;
private String headId;
}

View File

@@ -0,0 +1,44 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/11/13
**/
@Data
public class GridCmpmUpdateDTO {
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporate_account",notes = "")
private String gridType ;
/** 归属总行 */
@ApiModelProperty(value = "归属总行",notes = "")
private String deptCode ;
/** 客户号 */
@ApiModelProperty(name = "客户号",notes = "")
private String custId ;
/** 客户内码 */
@ApiModelProperty(name = "账户号",notes = "")
private String accountNo ;
/** 客户经理柜员号 */
@ApiModelProperty(name = "客户经理柜员号",notes = "")
private String userName ;
/** 客户经理姓名 */
@ApiModelProperty(name = "客户经理姓名",notes = "")
private String nickName ;
/** 网点机构号 */
@ApiModelProperty(name = "网点机构号",notes = "")
private Long outletId ;
/** 网点名称 */
@ApiModelProperty(name = "网点名称",notes = "")
private String outletName ;
/** 支行机构号 */
@ApiModelProperty(name = "支行机构号",notes = "")
private Long branchId ;
/** 支行名称 */
@ApiModelProperty(name = "支行名称",notes = "")
private String branchName ;
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/22
**/
@Data
public class TransferCustDTO {
/** 移交客户名称 */
@ApiModelProperty(value = "移交客户名称",notes = "")
private String custName ;
/** 移交客户号 */
@ApiModelProperty(value = "移交客户号",notes = "")
private String custId ;
/** 移交客户账号 */
@ApiModelProperty(value = "移交客户账号",notes = "")
private String accountNo ;
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.ibs.cmpm.domain.dto;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/21
**/
@Data
public class UserDeptDTO {
private Long deptId;
private String deptType;
private Long outletId;
private Long branchId;
private Long headId;
}

View File

@@ -0,0 +1,99 @@
package com.ruoyi.ibs.cmpm.domain.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* 零售星级客户管户明细表
*
* @author ruoyi
* @date 2024-11-20
*/
@Data
@TableName("dwb_retail_cust_level_manager_detail")
@ApiModel(description = "零售星级客户管户明细表")
public class DwbRetailCustLevelManagerDetail {
/** id */
@TableId
@ApiModelProperty(value = "id")
private Long id;
/** 网点号 */
@ApiModelProperty(value = "网点号")
private String outletId;
/** 网点名 */
@ApiModelProperty(value = "网点名")
private String outletName;
/** 支行号 */
@ApiModelProperty(value = "支行号")
private String branchId;
/** 支行名 */
@ApiModelProperty(value = "支行名")
private String branchName;
/** 客户名称 */
@ApiModelProperty(value = "客户名称")
private String custName;
/** 客户证件号 */
@ApiModelProperty(value = "客户证件号")
private String custIdc;
/** 客户内码 */
@ApiModelProperty(value = "客户内码")
private String custIsn;
/** 年龄 */
@ApiModelProperty(value = "年龄")
private String custAge;
/** 性别 */
@ApiModelProperty(value = "性别")
private String custSex;
/** 联系电话 */
@ApiModelProperty(value = "联系电话")
private String custPhone;
/** 联系地址 */
@ApiModelProperty(value = "联系地址")
private String custAddress;
/** 总资产余额 */
@ApiModelProperty(value = "总资产余额")
private BigDecimal custAumBal;
/** 总资产余额较上月变动 */
@ApiModelProperty(value = "总资产余额较上月变动")
private BigDecimal aumBalCompLm;
/** 总资产月日均 */
@ApiModelProperty(value = "总资产月日均")
private BigDecimal custAumMonthAvg;
/** 客户星级 */
@ApiModelProperty(value = "客户星级")
private String custLevel;
/** 星级较上月变动 */
@ApiModelProperty(value = "星级较上月变动")
private String custLevelCompLm;
/** 责任人 */
@ApiModelProperty(value = "责任人")
private String managerName;
/** 责任人柜员号 */
@ApiModelProperty(value = "责任人柜员号")
private String managerId;
}

View File

@@ -0,0 +1,73 @@
package com.ruoyi.ibs.cmpm.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/15
*
* ALTER TABLE ibs.grid_cmpm_retail_965 ADD cust_type varchar(100) NULL COMMENT '0个人 1商户 2企业';
* ALTER TABLE ibs.grid_cmpm_retail_965 ADD grid_type varchar(100) NULL COMMENT '零售retail 对公corporate 对公账户corporateAccount';
* ALTER TABLE ibs.grid_cmpm_retail_965 ADD account_no varchar(100) NULL COMMENT '账户号';
**/
@Data
public class GridCmpm {
/** id */
@TableId(type = IdType.AUTO)
@ApiModelProperty(name = "id",notes = "")
private Long id ;
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporateAccount",notes = "")
private String gridType ;
/** 客户类型 retail merchant business */
@ApiModelProperty(name = "客户类型",notes = "")
private String custType ;
/** 客户号 */
@ApiModelProperty(name = "客户号",notes = "")
private String custId ;
/** 身份证号 */
@ApiModelProperty(name = "身份证号",notes = "")
private String custIdc ;
/** 统信码 */
@ApiModelProperty(name = "统信码",notes = "")
private String usci;
/** 客户内码 */
@ApiModelProperty(name = "客户内码",notes = "")
private String custIdn ;
/** 客户内码 */
@ApiModelProperty(name = "账户号",notes = "")
private String accountNo ;
/** 客户姓名 */
@ApiModelProperty(name = "客户姓名",notes = "")
private String custName ;
/** 客户层级 */
@ApiModelProperty(name = "客户层级",notes = "")
private String custLevel ;
/** 客户经理柜员号 */
@ApiModelProperty(name = "客户经理柜员号",notes = "")
private String userName ;
/** 客户经理姓名 */
@ApiModelProperty(name = "客户经理姓名",notes = "")
private String nickName ;
/** 网点机构号 */
@ApiModelProperty(name = "网点机构号",notes = "")
private Long outletId ;
/** 网点名称 */
@ApiModelProperty(name = "网点名称",notes = "")
private String outletName ;
/** 支行机构号 */
@ApiModelProperty(name = "支行机构号",notes = "")
private Long branchId ;
/** 支行名称 */
@ApiModelProperty(name = "支行名称",notes = "")
private String branchName ;
private String source;
/** 锁定标识 */
@ApiModelProperty(name = "锁定标识",notes = "")
private Boolean lockFlag ;
}

View File

@@ -0,0 +1,60 @@
package com.ruoyi.ibs.cmpm.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/15
**/
@Data
public class GridCmpmRetail {
/** id */
@TableId(type = IdType.AUTO)
@ApiModelProperty(name = "id",notes = "")
private Long id ;
/** 客户号 */
@ApiModelProperty(name = "客户号",notes = "")
private String custId ;
/** 身份证号 */
@ApiModelProperty(name = "身份证号",notes = "")
private String custIdc ;
/** 统信码 */
@ApiModelProperty(name = "统信码",notes = "")
private String usci;
/** 客户内码 */
@ApiModelProperty(name = "客户内码",notes = "")
private String custIdn ;
/** 客户姓名 */
@ApiModelProperty(name = "客户姓名",notes = "")
private String custName ;
/** 客户层级 */
@ApiModelProperty(name = "客户层级",notes = "")
private String custLevel ;
/** 客户经理柜员号 */
@ApiModelProperty(name = "客户经理柜员号",notes = "")
private String userName ;
/** 客户经理姓名 */
@ApiModelProperty(name = "客户经理姓名",notes = "")
private String nickName ;
/** 网点机构号 */
@ApiModelProperty(name = "网点机构号",notes = "")
private Long outletId ;
/** 网点名称 */
@ApiModelProperty(name = "网点名称",notes = "")
private String outletName ;
/** 支行机构号 */
@ApiModelProperty(name = "支行机构号",notes = "")
private Long branchId ;
/** 支行名称 */
@ApiModelProperty(name = "支行名称",notes = "")
private String branchName ;
private String source;
/** 锁定标识 */
@ApiModelProperty(name = "锁定标识",notes = "")
private Boolean lockFlag ;
}

View File

@@ -0,0 +1,100 @@
package com.ruoyi.ibs.cmpm.domain.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @Author 吴凯程
* @Date 2025/10/20
**/
@Data
public class GridCmpmTransfer {
/** id */
@ApiModelProperty(value = "id",notes = "")
@TableId(value = "id", type = IdType.AUTO)
private Long id ;
@ApiModelProperty(value = "0移交 1认领",notes = "")
private String transferLabel;
/** 移交类型 网点内 支行内 跨支行 */
@ApiModelProperty(value = "移交类型 0网点内 1支行内 2跨支行",notes = "")
private Integer transferType ;
/** 移交状态 审批中 通过 拒绝 */
@ApiModelProperty(value = "移交状态 0网点审批中 1支行审批中 2总行审批中 3通过 -1拒绝",notes = "")
private String transferStatus ;
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售retail 对公corporate 对公账户corporate_account",notes = "")
private String gridType ;
/** 归属总行 */
@ApiModelProperty(value = "归属总行",notes = "")
private String headId ;
/** 移交客户名称 */
@ApiModelProperty(value = "移交客户名称",notes = "")
private String custName ;
/** 移交客户号 */
@ApiModelProperty(value = "移交客户号",notes = "")
private String custId ;
/** 移交客户账号 */
@ApiModelProperty(value = "移交客户账号",notes = "")
private String accountNo ;
/** 原客户经理柜员号 */
@ApiModelProperty(value = "原客户经理柜员号",notes = "")
private String prevUserName ;
/** 原归属网点 */
@ApiModelProperty(value = "原归属网点",notes = "")
private Long prevOutletId ;
/** 原归属支行 */
@ApiModelProperty(value = "原归属支行",notes = "")
private Long prevBranchId ;
/** 新客户经理柜员号 */
@ApiModelProperty(value = "新客户经理柜员号",notes = "")
private String nextUserName ;
/** 新归属网点 */
@ApiModelProperty(value = "新归属网点",notes = "")
private Long nextOutletId ;
/** 新归属支行 */
@ApiModelProperty(value = "新归属支行",notes = "")
private Long nextBranchId ;
/** 网点审批人 */
@ApiModelProperty(value = "网点审批人",notes = "")
private String outletApprover ;
/** 网点审批结果 */
@ApiModelProperty(value = "网点审批结果",notes = "")
private Boolean outletApproveResult ;
/** 网点审批时间 */
@ApiModelProperty(value = "网点审批时间",notes = "")
private Date outletApproveTime ;
/** 支行审批人 */
@ApiModelProperty(value = "支行审批人",notes = "")
private String branchApprover ;
/** 支行审批结果 */
@ApiModelProperty(value = "支行审批结果",notes = "")
private Boolean branchApproveResult ;
/** 支行审批时间 */
@ApiModelProperty(value = "支行审批时间",notes = "")
private Date branchApproveTime ;
/** 总行审批人 */
@ApiModelProperty(value = "总行审批人",notes = "")
private String headApprover ;
/** 总行审批结果 */
@ApiModelProperty(value = "总行审批结果",notes = "")
private Boolean headApproveResult ;
/** 总行审批时间 */
@ApiModelProperty(value = "总行审批时间",notes = "")
private Date headApproveTime ;
/** 创建时间 */
@ApiModelProperty(value = "创建时间",notes = "")
@TableField(fill = FieldFill.INSERT)
private Date createTime ;
/** 更新时间 */
@ApiModelProperty(value = "更新时间",notes = "")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime ;
}

View File

@@ -0,0 +1,95 @@
package com.ruoyi.ibs.cmpm.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* 零售星级客户管户明细表
*
* @author ruoyi
* @date 2024-11-20
*/
@Data
@ApiModel(description = "零售星级客户管户明细表")
public class DwbRetailCustLevelManagerDetailVO {
/** id */
@ApiModelProperty(value = "id")
private Long id;
/** 网点号 */
@ApiModelProperty(value = "网点号")
private String outletId;
/** 网点名 */
@ApiModelProperty(value = "网点名")
private String outletName;
/** 支行号 */
@ApiModelProperty(value = "支行号")
private String branchId;
/** 支行名 */
@ApiModelProperty(value = "支行名")
private String branchName;
/** 客户名称 */
@ApiModelProperty(value = "客户名称")
private String custName;
/** 客户证件号 */
@ApiModelProperty(value = "客户证件号")
private String custIdc;
/** 客户内码 */
@ApiModelProperty(value = "客户内码")
private String custIsn;
/** 年龄 */
@ApiModelProperty(value = "年龄")
private String custAge;
/** 性别 */
@ApiModelProperty(value = "性别")
private String custSex;
/** 联系电话 */
@ApiModelProperty(value = "联系电话")
private String custPhone;
/** 联系地址 */
@ApiModelProperty(value = "联系地址")
private String custAddress;
/** 总资产余额 */
@ApiModelProperty(value = "总资产余额")
private BigDecimal custAumBal;
/** 总资产余额较上月变动 */
@ApiModelProperty(value = "总资产余额较上月变动")
private BigDecimal aumBalCompLm;
/** 总资产月日均 */
@ApiModelProperty(value = "总资产月日均")
private BigDecimal custAumMonthAvg;
/** 客户星级 */
@ApiModelProperty(value = "客户星级")
private String custLevel;
/** 星级较上月变动 */
@ApiModelProperty(value = "星级较上月变动")
private String custLevelCompLm;
/** 责任人 */
@ApiModelProperty(value = "责任人")
private String managerName;
/** 责任人柜员号 */
@ApiModelProperty(value = "责任人柜员号")
private String managerId;
}

View File

@@ -0,0 +1,36 @@
package com.ruoyi.ibs.cmpm.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/11/17
**/
@Data
public class GridCmpmClaimVO {
@ApiModelProperty(value = "客户类型",notes = "")
private String custType;
/** 移交客户名称 */
@ApiModelProperty(value = "移交客户名称",notes = "")
private String custName ;
/** 移交客户号 */
@ApiModelProperty(value = "移交客户号",notes = "")
private String custId ;
/** 移交客户账号 */
@ApiModelProperty(value = "移交客户账号",notes = "")
private String accountNo ;
@ApiModelProperty(value = "柜员号",notes = "")
private String userName;
@ApiModelProperty(value = "柜员名",notes = "")
private String nickName;
@ApiModelProperty(value = "认领状态说明",notes = "")
private String claimStatus;
@ApiModelProperty(value = "可否进行认领",notes = "")
private Boolean claimFlag;
}

View File

@@ -0,0 +1,92 @@
package com.ruoyi.ibs.cmpm.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @Author 吴凯程
* @Date 2025/10/22
**/
@Data
public class GridCmpmTransferVO {
/** id */
@ApiModelProperty(value = "id",notes = "")
private Long id ;
@ApiModelProperty(value = "0移交 1认领",notes = "")
private String transferLabel;
/** 移交类型 网点内 支行内 跨支行 */
@ApiModelProperty(value = "移交类型 0网点内 1支行内 2跨支行",notes = "")
private Integer transferType ;
/** 移交状态 审批中 通过 拒绝 */
@ApiModelProperty(value = "移交状态 0网点审批中 1支行审批中 2总行审批中 3通过 -1拒绝",notes = "")
private String transferStatus ;
/** 移交网格 零售 对公 对公账户 */
@ApiModelProperty(value = "移交网格 零售 对公 对公账户",notes = "")
private String gridType ;
/** 归属总行 */
@ApiModelProperty(value = "归属总行",notes = "")
private String headId ;
/** 移交客户名称 */
@ApiModelProperty(value = "移交客户名称",notes = "")
private String custName ;
/** 移交客户号 */
@ApiModelProperty(value = "移交客户号",notes = "")
private String custId ;
/** 移交客户账号 */
@ApiModelProperty(value = "移交客户账号",notes = "")
private String accountNo ;
/** 原客户经理柜员号 */
@ApiModelProperty(value = "原客户经理柜员号",notes = "")
private String prevUser ;
/** 原归属网点 */
@ApiModelProperty(value = "原归属网点",notes = "")
private Long prevOutletId ;
/** 原归属支行 */
@ApiModelProperty(value = "原归属支行",notes = "")
private Long prevBranchId ;
/** 新客户经理柜员号 */
@ApiModelProperty(value = "新客户经理柜员号",notes = "")
private String nextUser ;
/** 新归属网点 */
@ApiModelProperty(value = "新归属网点",notes = "")
private Long nextOutletId ;
/** 新归属支行 */
@ApiModelProperty(value = "新归属支行",notes = "")
private Long nextBranchId ;
/** 网点审批人 */
@ApiModelProperty(value = "网点审批人",notes = "")
private String outletApprover ;
/** 网点审批结果 */
@ApiModelProperty(value = "网点审批结果",notes = "")
private String outletApproveResult ;
/** 网点审批时间 */
@ApiModelProperty(value = "网点审批时间",notes = "")
private Date outletApproveTime ;
/** 支行审批人 */
@ApiModelProperty(value = "支行审批人",notes = "")
private String branchApprover ;
/** 支行审批结果 */
@ApiModelProperty(value = "支行审批结果",notes = "")
private String branchApproveResult ;
/** 支行审批时间 */
@ApiModelProperty(value = "支行审批时间",notes = "")
private Date branchApproveTime ;
/** 总行审批人 */
@ApiModelProperty(value = "总行审批人",notes = "")
private String headApprover ;
/** 总行审批结果 */
@ApiModelProperty(value = "总行审批结果",notes = "")
private String headApproveResult ;
/** 总行审批时间 */
@ApiModelProperty(value = "总行审批时间",notes = "")
private Date headApproveTime ;
/** 创建时间 */
@ApiModelProperty(value = "创建时间",notes = "")
private Date createTime ;
/** 更新时间 */
@ApiModelProperty(value = "更新时间",notes = "")
private Date updateTime ;
}

View File

@@ -0,0 +1,65 @@
package com.ruoyi.ibs.cmpm.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/10/15
**/
@Data
public class GridCmpmVO {
/** id */
@ApiModelProperty(name = "id",notes = "")
private Long id ;
/** 客户号 */
@ApiModelProperty(name = "客户号",notes = "")
private String custId ;
/** 身份证号 */
@ApiModelProperty(name = "身份证号",notes = "")
private String custIdc ;
/** 客户内码 */
@ApiModelProperty(name = "客户内码",notes = "")
private String custIdn ;
@ApiModelProperty(name = "客户类型",notes = "")
private String custType ;
@ApiModelProperty(name = "统信码",notes = "")
private String usci;
private String accountNo;
/** 客户姓名 */
@ApiModelProperty(name = "客户姓名",notes = "")
private String custName ;
/** 客户层级 */
@ApiModelProperty(name = "客户层级",notes = "")
private String custLevel ;
/** 客户经理柜员号 */
@ApiModelProperty(name = "客户经理柜员号",notes = "")
private String userName ;
/** 客户经理姓名 */
@ApiModelProperty(name = "客户经理姓名",notes = "")
private String nickName ;
/** 网点机构号 */
@ApiModelProperty(name = "网点机构号",notes = "")
private Long outletId ;
/** 网点名称 */
@ApiModelProperty(name = "网点名称",notes = "")
private String outletName ;
/** 支行机构号 */
@ApiModelProperty(name = "支行机构号",notes = "")
private Long branchId ;
/** 支行名称 */
@ApiModelProperty(name = "支行名称",notes = "")
private String branchName ;
@ApiModelProperty(name = "客户来源",notes = "")
private String source;
/** 锁定标识 */
@ApiModelProperty(name = "锁定标识",notes = "")
private Boolean lockFlag ;
@ApiModelProperty(name = "是否可以移交",notes = "")
private Boolean transferFlag;
}

View File

@@ -0,0 +1,51 @@
package com.ruoyi.ibs.cmpm.mapper;
import com.ruoyi.ibs.cmpm.domain.dto.CustLevelDTO;
import com.ruoyi.ibs.cmpm.domain.dto.CustManagerDTO;
import com.ruoyi.ibs.cmpm.domain.dto.GridCmpmListDTO;
import com.ruoyi.ibs.cmpm.domain.dto.GridCmpmUpdateDTO;
import com.ruoyi.ibs.cmpm.domain.entity.GridCmpm;
import com.ruoyi.ibs.cmpm.domain.vo.DwbRetailCustLevelManagerDetailVO;
import com.ruoyi.ibs.cmpm.domain.vo.GridCmpmClaimVO;
import com.ruoyi.ibs.customerselect.domain.CustBaseInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/26
**/
@Mapper
public interface GridCmpmMapper {
List<GridCmpm> selectManageList(GridCmpmListDTO gridCmpmListDTO);
List<GridCmpm> selectCommonList(GridCmpmListDTO gridCmpmListDTO);
GridCmpm getGridCmpmByCustKey(@Param("custId") String custId, @Param("accountNo") String accountNo,
@Param("gridType") String gridType, @Param("deptCode") String deptCode);
List<GridCmpm> getGridCmpmByUserName(@Param("userName") String userName, @Param("deptCode") String deptCode, @Param("gridType") String gridType);
List<GridCmpm> queryGridCmpmByCustKey( @Param("deptCode") String deptCode, @Param("gridType") String gridType,
@Param("custIds") List<String> custIds, @Param("accountNos") List<String> accountNos );
Long updateGridCmpm(GridCmpmUpdateDTO gridCmpmUpdateDTO);
List<String> getAllCustLevel(@Param("gridType") String gridType);
String getCustLevel(CustLevelDTO custLevelDTO);
List<GridCmpmClaimVO> queryClaimList(@Param("deptCode") String deptCode, @Param("gridType") String gridType, @Param("custKey") String custKey);
List<DwbRetailCustLevelManagerDetailVO> getCustManagerList(CustManagerDTO custManagerDTO);
int getCustLevelCount(CustManagerDTO custManagerDTO);
// List<CustInfoRetail> selectCustInfoRetailFromGridCmpm(CustBaseInfo custBaseInfo);
List<CustBaseInfo> selectCustInfoFromGridCmpm(CustBaseInfo custBaseInfo);
}

View File

@@ -0,0 +1,56 @@
package com.ruoyi.ibs.cmpm.service;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.ibs.cmpm.mapper.GridCmpmMapper;
import com.ruoyi.ibs.customerselect.domain.ContinuousParam;
import com.ruoyi.ibs.customerselect.domain.CustBaseInfo;
import com.ruoyi.ibs.customerselect.domain.DiscreteParam;
import com.ruoyi.ibs.customerselect.mapper.GridSummarCountMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/11/21
**/
@Service
public class GridCmpmCustService {
@Resource
private GridCmpmMapper gridCmpmMapper;
@Autowired
private GridSummarCountMapper gridSummarCountMapper;
public List<CustBaseInfo> selectCustInfoRetailList(CustBaseInfo custBaseInfoParam) {
custBaseInfoParam.setCmpmUserName(SecurityUtils.getUsername());
custBaseInfoParam.setDeptCode(SecurityUtils.getHeadId());
//分页参数
custBaseInfoParam.setStart((custBaseInfoParam.getNum() - 1) * custBaseInfoParam.getSize());
custBaseInfoParam.setEnd(custBaseInfoParam.getNum() * custBaseInfoParam.getSize());
StringBuilder metricStrBuilder = new StringBuilder();
if (custBaseInfoParam.getContinuousParams() != null && custBaseInfoParam.getContinuousParams().size() > 0){
for (ContinuousParam info : custBaseInfoParam.getContinuousParams()){
if (metricStrBuilder.length() > 0) {
metricStrBuilder.append(",");
}
metricStrBuilder.append(gridSummarCountMapper.selectDictLabelByDictValue(info.getKey()));
}
}
if (custBaseInfoParam.getDiscreteParams() != null && custBaseInfoParam.getDiscreteParams().size() > 0){
for (DiscreteParam info:custBaseInfoParam.getDiscreteParams()){
if (metricStrBuilder.length() > 0) {
metricStrBuilder.append(",");
}
metricStrBuilder.append(gridSummarCountMapper.selectDictLabelByDictValue(info.getKey()));
}
}
return gridCmpmMapper.selectCustInfoFromGridCmpm(custBaseInfoParam);
}
}

View File

@@ -0,0 +1,87 @@
package com.ruoyi.ibs.cmpm.service;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.ibs.cmpm.domain.dto.CustLevelDTO;
import com.ruoyi.ibs.cmpm.domain.dto.CustManagerDTO;
import com.ruoyi.ibs.cmpm.domain.vo.DwbRetailCustLevelManagerDetailVO;
import com.ruoyi.ibs.cmpm.mapper.GridCmpmMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
/**
* @Author 吴凯程
* @Date 2025/10/15
**/
@Service
public class GridCmpmService {
@Resource
private GridCmpmMapper gridCmpmMapper;
private final String CUST_LEVEL_KEY = "GRID_CMPM_CUST_LEVEL_KEY_";
@Resource
private RedisCache redisCache;
public String getCustLevelByCust(CustLevelDTO custLevelDTO){
if (custLevelDTO.getCustType().equals("0") || custLevelDTO.getCustType().equals("1")){
custLevelDTO.setGridType("retail");
return gridCmpmMapper.getCustLevel(custLevelDTO);
}else if (Objects.nonNull(custLevelDTO.getAccountNo())){
custLevelDTO.setGridType("corporate_account");
}else {
custLevelDTO.setGridType("corporate");
}
// todo 公司部未上
return null;
}
public List<String> getAllCustLevel(String gridType){
String custLevelKey = CUST_LEVEL_KEY + gridType + SecurityUtils.getHeadId();
List<String> allCustLevel;
if (redisCache.hasKey(custLevelKey)){
allCustLevel = redisCache.getCacheObject(custLevelKey);
}else{
allCustLevel = gridCmpmMapper.getAllCustLevel(gridType);
redisCache.setCacheObject(custLevelKey,allCustLevel, 1, TimeUnit.HOURS);
}
return allCustLevel;
}
public List<DwbRetailCustLevelManagerDetailVO> selectCustManagerList(CustManagerDTO custManagerDTO) {
String userRole = SecurityUtils.userRole();
if (userRole.equals("manager")){
//客户经理查自己
custManagerDTO.setManagerId(SecurityUtils.getUsername());
}else if (userRole.equals("outlet")){
//网点管理员查网点
custManagerDTO.setOutletId(String.valueOf(SecurityUtils.getDeptId()));
}else if (userRole.equals("branch")){
//支行管理员查支行
custManagerDTO.setBranchId(String.valueOf(SecurityUtils.getDeptId()));
}
//其他角色查全部
return gridCmpmMapper.getCustManagerList(custManagerDTO);
}
public int custLevelCount(CustManagerDTO custManagerDTO) {
String userRole = SecurityUtils.userRole();
if (userRole.equals("manager")){
//客户经理查自己
custManagerDTO.setManagerId(SecurityUtils.getUsername());
}else if (userRole.equals("outlet")){
//网点管理员查网点
custManagerDTO.setOutletId(String.valueOf(SecurityUtils.getDeptId()));
}else if (userRole.equals("branch")){
//支行管理员查支行
custManagerDTO.setBranchId(String.valueOf(SecurityUtils.getDeptId()));
}
return gridCmpmMapper.getCustLevelCount(custManagerDTO);
}
}

View File

@@ -0,0 +1,58 @@
package com.ruoyi.ibs.custmap.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.ibs.custmap.domain.dto.CustMapCircleDTO;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import com.ruoyi.ibs.custmap.service.CustMapSelectService;
import com.ruoyi.ibs.custmap.service.DeptAddressService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
import java.util.Objects;
@Api(tags = "地图拓客接口")
@Slf4j
@RestController
@RequestMapping("/cust/map")
public class CustMapController extends BaseController {
@Resource
private CustMapSelectService custMapSelectService;
@Resource
private DeptAddressService deptAddressService;
@ApiOperation("坐标和半径查询用户列表")
@PostMapping("/search/circle")
public AjaxResult searchCustByCircle(@RequestBody @Valid CustMapCircleDTO custMapCircleDTO) {
if (Objects.isNull(custMapCircleDTO.getNum()) || Objects.isNull(custMapCircleDTO.getSize())){
throw new ServiceException("请输入页码和每页条数");
}
List<CustMapVO> custMapVOS = custMapSelectService.selectCustListByCircle(custMapCircleDTO);
return success(custMapVOS);
}
@ApiOperation("坐标和半径搜索用户数量")
@PostMapping("/search/circle/count")
public AjaxResult countCustMapListByCircle(@RequestBody @Valid CustMapCircleDTO custMapCircleDTO) {
return success(custMapSelectService.countCustMapListByCircle(custMapCircleDTO));
}
@ApiOperation("获取用户默认地址")
@GetMapping("/loc")
public AjaxResult getDefaultLoc() {
return success(deptAddressService.selectDeptAddressById());
}
@ApiOperation("获取新华社数据")
@GetMapping("/info")
public AjaxResult getRadarInfo(@RequestParam Integer id) {
return success(custMapSelectService.selectCustInfoRadarById(id));
}
}

View File

@@ -0,0 +1,54 @@
package com.ruoyi.ibs.custmap.controller;
import com.github.pagehelper.Page;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataPageInfo;
import com.ruoyi.ibs.custmap.domain.dto.CustMapFavoriteDTO;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import com.ruoyi.ibs.custmap.service.CustMapFavoriteService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/26
**/
@Api(tags = "地图拓客收藏接口")
@RestController
@RequestMapping("/cust/map/favorite")
public class CustMapFavoriteController extends BaseController {
@Resource
private CustMapFavoriteService custMapFavoriteService;
@ApiOperation("添加或取消收藏")
@GetMapping("/update")
public AjaxResult updateFavorite(@RequestParam Long radarId) {
return success(custMapFavoriteService.updateFavorite(radarId));
}
@ApiOperation("获取查收藏地图页面")
@GetMapping("/map")
public AjaxResult getFavoriteCount() {
return success(custMapFavoriteService.getFavoriteCountByUser());
}
@ApiOperation("获取收藏列表")
@GetMapping("/list")
public TableDataPageInfo<CustMapVO> getFavoriteList(CustMapFavoriteDTO custMapFavoriteDTO) {
Page<Object> page = startPage();
List<CustMapVO> custMapVOList = custMapFavoriteService.selectCustListByFavorite(custMapFavoriteDTO);
return getDataTable(custMapVOList, page);
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.ibs.custmap.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.ibs.custmap.domain.vo.CompanyTypeVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author 吴凯程
* @Date 2025/5/23
**/
@Api(tags = "地图拓客码值")
@RestController
@RequestMapping("/cust/map/metric")
public class CustMapMerticController extends BaseController {
@Resource
private RedisCache redisCache;
@ApiOperation("币种码值表")
@GetMapping("/cur")
public R<List<SysDictData>> getCurDict(){
List<SysDictData> sysDictTypeArrayList = new ArrayList<SysDictData>(redisCache.getCacheObject("sys_dict:cust_map_cur_metric"));
return R.ok(sysDictTypeArrayList);
}
@ApiOperation("机构类型码值表")
@GetMapping("/company/type")
public R<List<CompanyTypeVO>> getCompanyTypeDict(){
List<SysDictData> sysDictTypeArrayList = new ArrayList<SysDictData>(redisCache.getCacheObject("sys_dict:cust_map_company_type_metric"));
List<CompanyTypeVO> collect = sysDictTypeArrayList.stream().map(CompanyTypeVO::new).collect(Collectors.toList());
List<CompanyTypeVO> collect1 = collect.stream().filter(companyTypeVO -> companyTypeVO.getSort() == 1).collect(Collectors.toList());
for (CompanyTypeVO companyTypeVO : collect1) {
companyTypeVO.setChildren(companyTypeDfs(companyTypeVO.getValue(), companyTypeVO.getSort() + 1, collect));
}
return R.ok(collect1);
}
private List<CompanyTypeVO> companyTypeDfs(String value, Long sort, List<CompanyTypeVO> collect){
List<CompanyTypeVO> collect1 = collect.stream().filter(companyTypeVO -> companyTypeVO.getValue().startsWith(value) && companyTypeVO.getSort() == sort)
.collect(Collectors.toList());
if (collect1.size() == 0){
return null;
}
for (CompanyTypeVO companyTypeVO : collect1) {
companyTypeVO.setChildren(companyTypeDfs(companyTypeVO.getValue(), companyTypeVO.getSort() + 1, collect));
}
return collect1;
}
}

View File

@@ -0,0 +1,45 @@
package com.ruoyi.ibs.custmap.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
@Data
public class CustMapCircleDTO extends CustMapDTO{
@NotNull(message = "纬度不能为空")
@ApiModelProperty(value = "纬度")
private Double targetLat;
@NotNull(message = "经度不能为空")
@ApiModelProperty(value = "经度")
private Double targetLng;
private Double latRange;
private Double lngRange;
@NotNull(message = "距离不能为空")
@ApiModelProperty(value = "距离半径")
private Double dist;
@ApiModelProperty(value = "页面大小")
private Integer size;
@ApiModelProperty(value = "页数")
private Integer num;
private Integer pageIndex;
@ApiModelProperty(value = "升降序")
private Boolean isAsc;
@ApiModelProperty(value = "企业名称")
private String custName;
}

View File

@@ -0,0 +1,218 @@
package com.ruoyi.ibs.custmap.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
@Data
public class CustMapDTO {
private String dept;
/**
* 企业规模 | en_qly
*/
@ApiModelProperty(value = "企业规模 | en_qly")
private List<String> custScaleList;
@ApiModelProperty(value = "机构类型")
private List<String> companyTypeList;
@ApiModelProperty(value = "包含机构类型")
private Boolean companyTypeInclude;
/**
* 法人电话
*/
@ApiModelProperty(value = "是否电话")
private Boolean isPhoneNumber;
@ApiModelProperty(value = "是否邮箱")
private Boolean isEmail;
/**
* 省
*/
@ApiModelProperty(value = "")
private String province;
/**
* 市
*/
@ApiModelProperty(value = "")
private String city;
/**
* 县
*/
@ApiModelProperty(value = "")
private String county;
/**
* 街道/镇
*/
@ApiModelProperty(value = "街道/镇")
private String street;
/**
* 社区/村
*/
@ApiModelProperty(value = "社区/村")
private String community;
/**
* 所在行业
*/
@ApiModelProperty(value = "所在行业")
private List<String> belongBusinessList;
/**
* 成立年限
*/
@ApiModelProperty(value = "成立年限")
private List<RangeInterval> startDateIntervalList;
/**
* 经营状态
*/
@ApiModelProperty(value = "经营状态")
private List<String> statusList;
@ApiModelProperty(value = "是否包含特定经营状态")
private Boolean statusInclude;
/**
* 注册资本币种
*/
@ApiModelProperty(value = "注册资本币种")
private String registCapiCur;
@ApiModelProperty(value = "注册资本范围")
private List<RangeInterval> registCapiIntervalList;
/**
* 实缴资本币种
*/
@ApiModelProperty(value = "实缴资本币种")
private String recCapCur;
@ApiModelProperty(value = "实缴资本范围")
private List<RangeInterval> recCapIntervalList;
/**
* 经营信息-养老保险参保人数
*/
@ApiModelProperty(value = "经营信息-养老保险参保人数")
private List<RangeInterval> businessInfoPenInsurIntervalList;
/**
* 经营信息-医疗保险参保人数
*/
@ApiModelProperty(value = "经营信息-医疗保险参保人数")
private List<RangeInterval> businessInfoMediInsurIntervalList;
/**
* 经营信息-有无进出口信息1为有0为无
*/
@ApiModelProperty(value = "经营信息-有无进出口信息1为有0为无")
private Boolean businessInfoImExportFlag;
@ApiModelProperty(value = "进出口信用等级列表")
private List<String> businessInfoImExportCreditGradeList;
/**
* 经营信息-有无政府扶持和奖励1为有0为无
*/
@ApiModelProperty(value = "经营信息-有无政府扶持和奖励1为有0为无")
private Boolean businessInfoGovSupportFlag;
/**
* 经营信息-有无融资信息1为有0为无
*/
@ApiModelProperty(value = "经营信息-有无融资信息1为有0为无")
private Boolean businessInfoFinaInfoFlag;
/**
* 经营信息-融资轮次
*/
@ApiModelProperty(value = "经营信息-融资轮次")
private List<String> businessInfoFinaRoundList;
/**
* 知识产权-有无商标信息1为有0为无
*/
@ApiModelProperty(value = "知识产权-有无商标信息1为有0为无")
private Boolean intelPropRightTrademarkInfoFlag;
/**
* 知识产权-有无专利信息1为有0为无
*/
@ApiModelProperty(value = "知识产权-有无专利信息1为有0为无")
private Boolean intelPropRightPatentInfoFlag;
/**
* 知识产权-有无软件著作权1为有0为无
*/
@ApiModelProperty(value = "知识产权-有无软件著作权1为有0为无")
private Boolean intelPropRightSoftCopyrightFlag;
/**
* 科技等级-类型
*/
@ApiModelProperty(value = "科技等级-类型")
private List<String> technologyLvlTypeList;
/**
* 科技等级-状态
*/
@ApiModelProperty(value = "科技等级-状态")
private List<String> technologyLvlStateList;
/**
* 科技等级-级别
*/
@ApiModelProperty(value = "科技等级-级别")
private List<String> technologyLvlLevelList;
/**
* 资本市场-有无上市信息1为有0为无
*/
@ApiModelProperty(value = "资本市场-有无上市信息1为有0为无")
private Boolean capMarketListInfoFlag;
/**
* 风险特征-有无失信信息1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无失信信息1为有0为无")
private Boolean riskCharDisInfoFlag;
/**
* 风险特征-有无破产清算1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无破产清算1为有0为无")
private Boolean riskCharBankruptcyLiquiFlag;
/**
* 风险特征-有无变更记录1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无变更记录1为有0为无")
private Boolean riskCharChangeRecordFlag;
/**
* 风险特征-有无失信被执行人1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无失信被执行人1为有0为无")
private Boolean riskCharDisPersonFlag;
/**
* 风险特征-有无严重失信违法1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无严重失信违法1为有0为无")
private Boolean riskCharSncFlag;
/**
* 风险特征-有无限制高消费1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无限制高消费1为有0为无")
private Boolean riskCharRhcFlag;
/**
* 经营风险-有无行政处罚1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无行政处罚1为有0为无")
private Boolean operatRiskAdminPenaltyFlag;
/**
* 经营风险-有无环保处罚1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无环保处罚1为有0为无")
private Boolean operatRiskEnvirPenaltyFlag;
/**
* 经营风险-有无欠税信息1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无欠税信息1为有0为无")
private Boolean operatRiskOweTaxInfoFlag;
/**
* 经营风险-有无终末案件1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无终末案件1为有0为无")
private Boolean operatRiskFinalCaseFlag;
/**
* 经营风险-有无未结案件1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无未结案件1为有0为无")
private Boolean operatRiskUnfinishCaseFlag;
/**
* 新增企业标识1为新增企业0为存量企业
*/
@ApiModelProperty(value = "新增企业标识1为新增企业0为存量企业")
private Boolean newCompanyFlag;
private Boolean isBranchFlag;
private Boolean isHasBranchFlag;
}

View File

@@ -0,0 +1,24 @@
package com.ruoyi.ibs.custmap.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/5/23
**/
@Data
public class CustMapFavoriteDTO {
/** 用户名 */
@ApiModelProperty(value = "用户名",notes = "")
private String userName ;
private Double longitude ;
private Double latitude ;
@ApiModelProperty(value = "升降序")
private Boolean isAsc;
}

View File

@@ -0,0 +1,14 @@
package com.ruoyi.ibs.custmap.domain.dto;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/5/20
**/
@Data
public class RangeInterval{
private Long min;
private Long max;
}

View File

@@ -0,0 +1,292 @@
package com.ruoyi.ibs.custmap.domain.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* 客户雷达信息表(CustInfoRadar965)实体类
*
* @author makejava
* @since 2025-05-22 16:44:05
*/
@Data
@TableName("cust_info_radar")
public class CustInfoRadar {
/**
* id
*/
@TableId
@ApiModelProperty(value = "ID")
private Integer id;
/**
* 企业规模 | en_qly
*/
@ApiModelProperty(value = "企业规模 | en_qly")
private String custScale;
/**
* 企业名称 | cust_nam
*/
@ApiModelProperty(value = "企业名称 | cust_nam")
private String custName;
/**
* 法人姓名
*/
@ApiModelProperty(value = "法人姓名")
private String lpName;
/**
* 法人电话
*/
@ApiModelProperty(value = "法人电话")
private String custPhone;
/**
* 客户号 | cust_id
*/
@ApiModelProperty(value = "客户号 | cust_id")
private String custId;
/**
* 客户内码 | cst_id
*/
@ApiModelProperty(value = "客户内码 | cst_id")
private String custIsn;
/**
* 统一社会信用识别码 | uniscid
*/
@ApiModelProperty(value = "统一社会信用识别码 | uniscid")
private String socialCreditCode;
/**
* 省
*/
@ApiModelProperty(value = "")
private String province;
/**
* 市
*/
@ApiModelProperty(value = "")
private String city;
/**
* 县
*/
@ApiModelProperty(value = "")
private String county;
/**
* 街道/镇
*/
@ApiModelProperty(value = "街道/镇")
private String street;
/**
* 社区/村
*/
@ApiModelProperty(value = "社区/村")
private String community;
/**
* 详细地址
*/
@ApiModelProperty(value = "详细地址")
private String addressDetail;
/**
* 经度
*/
@ApiModelProperty(value = "经度")
private Double longitude;
/**
* 纬度
*/
@ApiModelProperty(value = "纬度")
private Double latitude;
/**
* 所在行业
*/
@ApiModelProperty(value = "所在行业")
private String belongBusiness;
/**
* 成立年限
*/
@ApiModelProperty(value = "成立年限")
private Date startDate;
/**
* 经营状态
*/
@ApiModelProperty(value = "经营状态")
private String status;
/**
* 注册资本币种
*/
@ApiModelProperty(value = "注册资本币种")
private String registCapiCur;
/**
* 注册资本数值
*/
@ApiModelProperty(value = "注册资本数值")
private Double registCapiValue;
/**
* 注册资本单位
*/
@ApiModelProperty(value = "注册资本单位")
private String registCapiUnit;
/**
* 实缴资本币种
*/
@ApiModelProperty(value = "实缴资本币种")
private String recCapCur;
/**
* 实缴资本数值
*/
@ApiModelProperty(value = "实缴资本数值")
private Double recCapValue;
/**
* 实缴资本单位
*/
@ApiModelProperty(value = "实缴资本单位")
private String recCapUnit;
/**
* 联系方式
*/
@ApiModelProperty(value = "联系方式")
private String phoneNumber;
/**
* 经营信息-养老保险参保人数
*/
@ApiModelProperty(value = "经营信息-养老保险参保人数")
private String businessInfoPenInsurNum;
/**
* 经营信息-医疗保险参保人数
*/
@ApiModelProperty(value = "经营信息-医疗保险参保人数")
private String businessInfoMediInsurNum;
/**
* 经营信息-有无进出口信息1为有0为无
*/
@ApiModelProperty(value = "经营信息-有无进出口信息1为有0为无")
private Boolean businessInfoImExportFlag;
@ApiModelProperty(value = "经营信息-进出口信用等级")
private String businessInfoImExportCreditGrade;
/**
* 经营信息-有无政府扶持和奖励1为有0为无
*/
@ApiModelProperty(value = "经营信息-有无政府扶持和奖励1为有0为无")
private Boolean businessInfoGovSupportFlag;
/**
* 经营信息-有无融资信息1为有0为无
*/
@ApiModelProperty(value = "经营信息-有无融资信息1为有0为无")
private Boolean businessInfoFinaInfoFlag;
/**
* 经营信息-融资轮次
*/
@ApiModelProperty(value = "经营信息-融资轮次")
private String businessInfoFinaRound;
/**
* 知识产权-有无商标信息1为有0为无
*/
@ApiModelProperty(value = "知识产权-有无商标信息1为有0为无")
private Boolean intelPropRightTrademarkInfoFlag;
/**
* 知识产权-有无专利信息1为有0为无
*/
@ApiModelProperty(value = "知识产权-有无专利信息1为有0为无")
private Boolean intelPropRightPatentInfoFlag;
/**
* 知识产权-有无软件著作权1为有0为无
*/
@ApiModelProperty(value = "知识产权-有无软件著作权1为有0为无")
private Boolean intelPropRightSoftCopyrightFlag;
/**
* 科技等级-类型
*/
@ApiModelProperty(value = "科技等级-类型")
private String technologyLvlType;
/**
* 科技等级-状态
*/
@ApiModelProperty(value = "科技等级-状态")
private String technologyLvlState;
/**
* 科技等级-级别
*/
@ApiModelProperty(value = "科技等级-级别")
private String technologyLvlLevel;
/**
* 资本市场-有无上市信息1为有0为无
*/
@ApiModelProperty(value = "资本市场-有无上市信息1为有0为无")
private Boolean capMarketListInfoFlag;
/**
* 风险特征-有无失信信息1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无失信信息1为有0为无")
private Boolean riskCharDisInfoFlag;
/**
* 风险特征-有无破产清算1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无破产清算1为有0为无")
private Boolean riskCharBankruptcyLiquiFlag;
/**
* 风险特征-有无变更记录1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无变更记录1为有0为无")
private Boolean riskCharChangeRecordFlag;
/**
* 风险特征-有无失信被执行人1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无失信被执行人1为有0为无")
private Boolean riskCharDisPersonFlag;
/**
* 风险特征-有无严重失信违法1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无严重失信违法1为有0为无")
private Boolean riskCharSncFlag;
/**
* 风险特征-有无限制高消费1为有0为无
*/
@ApiModelProperty(value = "风险特征-有无限制高消费1为有0为无")
private Boolean riskCharRhcFlag;
/**
* 经营风险-有无行政处罚1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无行政处罚1为有0为无")
private Boolean operatRiskAdminPenaltyFlag;
/**
* 经营风险-有无环保处罚1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无环保处罚1为有0为无")
private Boolean operatRiskEnvirPenaltyFlag;
/**
* 经营风险-有无欠税信息1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无欠税信息1为有0为无")
private Boolean operatRiskOweTaxInfoFlag;
/**
* 经营风险-有无终末案件1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无终末案件1为有0为无")
private Boolean operatRiskFinalCaseFlag;
/**
* 经营风险-有无未结案件1为有0为无
*/
@ApiModelProperty(value = "经营风险-有无未结案件1为有0为无")
private Boolean operatRiskUnfinishCaseFlag;
/**
* 新增企业标识1为新增企业0为存量企业
*/
@ApiModelProperty(value = "新增企业标识1为新增企业0为存量企业")
private Boolean newCompanyFlag;
@ApiModelProperty(value = "是否是分支机构")
private Boolean isBranchFlag;
@ApiModelProperty(value = "是否有分支机构")
private Boolean isHasBranchFlag;
@ApiModelProperty(value = "电子邮箱")
private String email;
@ApiModelProperty(value = "注册资本展示")
private String registCapiShow;
@ApiModelProperty(value = "实缴资本展示")
private String recCapShow;
@ApiModelProperty(value = "经营范围")
private String scope;
@ApiModelProperty(value = "客户类型")
private String custType;
@ApiModelProperty(value = "机构类型")
private String companyType;
}

View File

@@ -0,0 +1,26 @@
package com.ruoyi.ibs.custmap.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/5/23
**/
@Data
@TableName("cust_map_favorite")
public class CustMapFavorite {
/** 主键 */
@ApiModelProperty(value = "主键",notes = "")
@TableId(type = IdType.AUTO)
private Long id ;
/** 用户名 */
@ApiModelProperty(value = "用户名",notes = "")
private String userName ;
@ApiModelProperty(value = "雷达表id",notes = "")
private Long radarId;
}

View File

@@ -0,0 +1,33 @@
package com.ruoyi.ibs.custmap.domain.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/5/23
**/
@ApiModel(value = "机构地址表",description = "")
@TableName("dept_address")
@Data
public class DeptAddress {
/** 部门id */
@ApiModelProperty(value = "部门id",notes = "")
@TableId
private Long deptId ;
/** */
@ApiModelProperty(value = "地址",notes = "")
private String address ;
@ApiModelProperty(value = "城市",notes = "")
private String city ;
/** */
@ApiModelProperty(value = "经度",notes = "")
private Double lng ;
/** */
@ApiModelProperty(value = "纬度",notes = "")
private Double lat ;
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.ibs.custmap.domain.vo;
import com.ruoyi.common.core.domain.entity.SysDictData;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/28
**/
@Data
public class CompanyTypeVO {
private Long sort;
private String label;
private String value;
private List<CompanyTypeVO> children;
public CompanyTypeVO(SysDictData sysDictData) {
this.sort = sysDictData.getDictSort();
this.label = sysDictData.getDictLabel();
this.value = sysDictData.getDictValue();
}
}

View File

@@ -0,0 +1,64 @@
package com.ruoyi.ibs.custmap.domain.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
@Data
public class CustMapVO {
@ApiModelProperty(value = "ID")
private Integer id;
@ApiModelProperty(value = "客户名称")
private String custName;
@ApiModelProperty(value = "法人")
private String lpName;
@ApiModelProperty(value = "开始日期")
private String startDate;
@ApiModelProperty(value = "注册资本显示")
private String registCapiShow;
@ApiModelProperty(value = "省份")
private String province;
@ApiModelProperty(value = "城市")
private String city;
@ApiModelProperty(value = "距离")
private double distance;
@ApiModelProperty(value = "电话号码")
private String phoneNumber;
@ApiModelProperty(value = "详细地址")
private String addressDetail;
@ApiModelProperty(value = "经度")
private BigDecimal longitude;
@ApiModelProperty(value = "纬度")
private BigDecimal latitude;
@ApiModelProperty(value = "社会信用代码")
private String socialCreditCode;
@ApiModelProperty(value = "新公司标志")
private Boolean newCompanyFlag;
@ApiModelProperty(value = "是否收藏")
private Boolean isFavorite;
@ApiModelProperty(value = "客户类型")
private String custType;
}

View File

@@ -0,0 +1,18 @@
package com.ruoyi.ibs.custmap.domain.vo;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/5/26
**/
@Data
public class FavoriteCountVO {
private String city;
private Long countFavorite;
private String wkt;
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.ibs.custmap.domain.vo;
import lombok.Data;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/26
**/
@Data
public class FavoriteVO {
private Long favoriteTotal;
private List<FavoriteCountVO> favoriteList;
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.custmap.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ibs.custmap.domain.dto.CustMapFavoriteDTO;
import com.ruoyi.ibs.custmap.domain.entity.CustMapFavorite;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import com.ruoyi.ibs.custmap.domain.vo.FavoriteCountVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
@Mapper
public interface CustMapFavoriteMapper extends BaseMapper<CustMapFavorite> {
List<FavoriteCountVO> countFavoriteCustMap(@Param("userName") String userName);
List<FavoriteCountVO> getCityWktList();
List<CustMapVO> getFavoriteCustList(CustMapFavoriteDTO custMapFavoriteDTO);
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.custmap.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ibs.custmap.domain.dto.CustMapCircleDTO;
import com.ruoyi.ibs.custmap.domain.entity.CustInfoRadar;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
@Mapper
public interface CustMapMapper extends BaseMapper<CustInfoRadar> {
List<CustMapVO> selectCustMapListByCircle(CustMapCircleDTO custMapCircleDTO );
Long countCustMapListByCircle(CustMapCircleDTO custMapCircleDTO);
CustInfoRadar selectByCustId(@Param("custId") String custId, @Param("dept") String dept);
}

View File

@@ -0,0 +1,13 @@
package com.ruoyi.ibs.custmap.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ibs.custmap.domain.entity.DeptAddress;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author 吴凯程
* @Date 2025/5/26
**/
@Mapper
public interface DeptAddressMapper extends BaseMapper<DeptAddress> {
}

View File

@@ -0,0 +1,70 @@
package com.ruoyi.ibs.custmap.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.ibs.custmap.domain.dto.CustMapFavoriteDTO;
import com.ruoyi.ibs.custmap.domain.entity.CustMapFavorite;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import com.ruoyi.ibs.custmap.domain.vo.FavoriteCountVO;
import com.ruoyi.ibs.custmap.domain.vo.FavoriteVO;
import com.ruoyi.ibs.custmap.mapper.CustMapFavoriteMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
/**
* @Author 吴凯程
* @Date 2025/5/23
**/
@Service
public class CustMapFavoriteService {
@Resource
private CustMapFavoriteMapper custMapFavoriteMapper;
public String updateFavorite(Long radarId){
LambdaQueryWrapper<CustMapFavorite> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CustMapFavorite::getUserName, SecurityUtils.getUsername())
.eq(CustMapFavorite::getRadarId, radarId);
CustMapFavorite custMapFavorite = custMapFavoriteMapper.selectOne(queryWrapper);
if (Objects.isNull(custMapFavorite)){
CustMapFavorite custMapFavoriteVO = new CustMapFavorite();
custMapFavoriteVO.setUserName(SecurityUtils.getUsername());
custMapFavoriteVO.setRadarId(radarId);
custMapFavoriteMapper.insert(custMapFavoriteVO);
return "添加收藏成功";
}
custMapFavoriteMapper.deleteById(custMapFavorite);
return "移除收藏成功";
}
public FavoriteVO getFavoriteCountByUser(){
FavoriteVO favoriteVO = new FavoriteVO();
Long countTotal = 0L;
List<FavoriteCountVO> cityWktList = custMapFavoriteMapper.getCityWktList();
List<FavoriteCountVO> favoriteCountVOS = custMapFavoriteMapper.countFavoriteCustMap(SecurityUtils.getUsername());
for (FavoriteCountVO favoriteCityVO : cityWktList) {
FavoriteCountVO favoriteCountVO = favoriteCountVOS.stream()
.filter(item -> Objects.nonNull(item.getCity()) && item.getCity().equals(favoriteCityVO.getCity()))
.findFirst().orElse(null);
if (Objects.nonNull(favoriteCountVO)){
favoriteCityVO.setCountFavorite(favoriteCountVO.getCountFavorite());
countTotal += favoriteCountVO.getCountFavorite();
}
}
favoriteVO.setFavoriteList(cityWktList);
favoriteVO.setFavoriteTotal(countTotal);
return favoriteVO;
}
public List<CustMapVO> selectCustListByFavorite(CustMapFavoriteDTO custMapFavoriteDTO){
custMapFavoriteDTO.setUserName(SecurityUtils.getUsername());
return custMapFavoriteMapper.getFavoriteCustList(custMapFavoriteDTO);
}
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.ibs.custmap.service;
import com.ruoyi.ibs.custmap.domain.dto.CustMapCircleDTO;
import com.ruoyi.ibs.custmap.domain.entity.CustInfoRadar;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
public interface CustMapSelectService {
List<CustMapVO> selectCustListByCircle(CustMapCircleDTO custMapCircleDTO);
Long countCustMapListByCircle(CustMapCircleDTO custMapCircleDTO);
CustInfoRadar selectCustInfoRadarById(Integer custId);
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.custmap.service;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.ibs.custmap.domain.entity.DeptAddress;
import com.ruoyi.ibs.custmap.mapper.DeptAddressMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @Author 吴凯程
* @Date 2025/5/26
**/
@Service
public class DeptAddressService {
@Resource
private DeptAddressMapper deptAddressMapper;
public DeptAddress selectDeptAddressById() {
return deptAddressMapper.selectById(SecurityUtils.getDeptId());
}
}

View File

@@ -0,0 +1,74 @@
package com.ruoyi.ibs.custmap.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.ibs.custmap.domain.dto.CustMapCircleDTO;
import com.ruoyi.ibs.custmap.domain.entity.CustInfoRadar;
import com.ruoyi.ibs.custmap.domain.entity.CustMapFavorite;
import com.ruoyi.ibs.custmap.domain.vo.CustMapVO;
import com.ruoyi.ibs.custmap.mapper.CustMapFavoriteMapper;
import com.ruoyi.ibs.custmap.mapper.CustMapMapper;
import com.ruoyi.ibs.custmap.service.CustMapSelectService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/15
**/
@Service
public class CustMapSelectServiceImpl implements CustMapSelectService {
@Resource
private CustMapMapper custMapMapper;
@Resource
private CustMapFavoriteMapper custMapFavoriteMapper;
/**
* @param
* @return
*/
@Override
public List<CustMapVO> selectCustListByCircle(CustMapCircleDTO custMapCircleDTO) {
custMapCircleDTO.setDept(SecurityUtils.getHeadId());
custMapCircleDTO.setPageIndex((custMapCircleDTO.getNum() - 1) * custMapCircleDTO.getSize());
custMapCircleDTO.setLatRange(custMapCircleDTO.getDist() / 111.0);
custMapCircleDTO.setLngRange(custMapCircleDTO.getDist() / (111.0 * Math.cos(Math.toRadians(custMapCircleDTO.getTargetLat()))));
List<CustMapVO> list = custMapMapper.selectCustMapListByCircle(custMapCircleDTO);
for (CustMapVO custMapVO : list) {
LambdaQueryWrapper<CustMapFavorite> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CustMapFavorite::getUserName, SecurityUtils.getUsername())
.eq(CustMapFavorite::getRadarId, custMapVO.getId());
custMapVO.setIsFavorite(custMapFavoriteMapper.selectCount(queryWrapper) > 0);
}
return list;
}
/**
* @param custMapCircleDTO
* @return
*/
@Override
public Long countCustMapListByCircle(CustMapCircleDTO custMapCircleDTO) {
custMapCircleDTO.setDept(SecurityUtils.getHeadId());
custMapCircleDTO.setLatRange(custMapCircleDTO.getDist() / 111.0);
custMapCircleDTO.setLngRange(custMapCircleDTO.getDist() / (111.0 * Math.cos(Math.toRadians(custMapCircleDTO.getTargetLat()))));
return custMapMapper.countCustMapListByCircle(custMapCircleDTO);
}
/**
* @param
* @return
*/
@Override
public CustInfoRadar selectCustInfoRadarById(Integer id) {
return custMapMapper.selectById(id);
}
}

View File

@@ -0,0 +1,32 @@
package com.ruoyi.ibs.customerselect.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ibs.customerselect.service.CustCsvTagService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @Author 吴凯程
* @Date 2025/11/28
**/
@Api(tags = "CSV客户标签")
@RestController
@RequestMapping("/csv/tag")
public class CustCsvTagController extends BaseController {
@Resource
private CustCsvTagService custCsvTagService;
@GetMapping("/search")
@ApiOperation("查询客户标签")
public AjaxResult searchCsv(@RequestParam String custIdc) {
return AjaxResult.success(custCsvTagService.getCsvTagJson(custIdc));
}
}

View File

@@ -0,0 +1,126 @@
package com.ruoyi.ibs.customerselect.controller;
import com.github.pagehelper.Page;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataPageInfo;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.ibs.customerselect.domain.*;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.ibs.customerselect.service.IMyCustomerService;
import com.ruoyi.ibs.dashboard.domain.vo.CommonRespVO;
import com.ruoyi.ibs.dashboard.service.DashboardService;
import com.ruoyi.ibs.grid.domain.excel.NewPersonAnchor;
import com.ruoyi.ibs.list.domain.CustManualTagDTO;
import com.ruoyi.ibs.list.domain.CustTagVo;
import com.ruoyi.ibs.list.domain.TreeNode;
import com.ruoyi.ibs.list.service.ISysCampaignGroupCustomerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.rmi.ServerException;
import java.util.*;
/**
* 我的客户 控制类
*
* @author ruoyi
*/
@Api(tags="客户基本信息管理")
@RestController
@RequestMapping("/system/custBaseInfo")
public class MyCustomerController extends BaseController {
@Autowired
private IMyCustomerService myCustomerService;
@Autowired
ISysCampaignGroupCustomerService iSysCampaignGroupCustomerService;
@Autowired
private DashboardService dashboardService;
private static Logger logger= LoggerFactory.getLogger(MyCustomerController.class);
/**
* 获取我的客户信息列表
*/
// @PreAuthorize("@ss.hasPermi('system:custBaseInfo:list')")
@Log(title = "我的客户-获取客户信息列表")
@PostMapping("/list")
@ApiOperation("获取客户信息列表")
public AjaxResult list(@RequestBody CustBaseInfo sysCustomerBasedata)
// public TableDataPageInfo<CustBaseInfo> list(CustBaseInfo sysCustomerBasedata)
{
// Page<Object> page = startPage();
List<CustBaseInfo> custBaseInfoList = myCustomerService.selectSysCustomerBasedataList(sysCustomerBasedata);
logger.info(custBaseInfoList.toString());
// return getDataTable(custBaseInfoList ,page);
return AjaxResult.success(custBaseInfoList);
}
@Log(title = "我的客户-获取商户云相关信息")
@GetMapping("/merchantMessage")
@ApiOperation("获取商户云相关信息")
public AjaxResult merchantMessage( String custId)
// public TableDataPageInfo<CustBaseInfo> list(CustBaseInfo sysCustomerBasedata)
{
// Page<Object> page = startPage();
MerchantMcspInfo merchantMcspInfo = myCustomerService.selectmerchantMessage(custId);
// logger.info(merchantMcspInfo.toString());
// return getDataTable(custBaseInfoList ,page);
return AjaxResult.success(merchantMcspInfo);
}
@GetMapping("/tagList")
@ApiOperation("获取客户信息標簽列表")
public AjaxResult list(@Valid @NotNull String custId,@Valid @NotNull String custType)
{
List<TreeNode> hashMaps = myCustomerService.selectCustEnumByCustId(custId,custType);
return AjaxResult.success(hashMaps);
}
@GetMapping("/manualTagList")
@ApiOperation("获取自定义客户标签列表")
public AjaxResult manualList(@Valid @NotNull String custId,@Valid @NotNull String custType)
{
List<TreeNode> hashMaps = myCustomerService.selectmanualListByCustId(custId,custType);
return AjaxResult.success(hashMaps);
}
@PostMapping(value = "/editCustTag")
@ApiOperation("修改客户标签")
public R<Objects> editCustTag(@RequestBody CustTagDTO custTagDTO) {
myCustomerService.editCustTag(custTagDTO);
return R.ok();
}
@PostMapping(value = "/editManualTag")
@ApiOperation("修改手动标签")
public R<Objects> editManualTag(@RequestBody CustManualTagDTO custManualTagDTO) {
myCustomerService.editManualTag(custManualTagDTO);
return R.ok();
}
@GetMapping("/specialTagList")
@ApiOperation("获取青田特色商户标签列表")
public AjaxResult specialTagList(String custId)
{
CommonRespVO tagList = dashboardService.getTagList(custId);
return AjaxResult.success(tagList.getData());
}
}

View File

@@ -0,0 +1,49 @@
package com.ruoyi.ibs.customerselect.controller;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.ibs.customerselect.service.MyCustomerGridSelectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @Author 吴凯程
* @Date 2025/5/8
**/
@Api(tags = "我的客户-网格筛选")
@RestController
@RequestMapping("/my/customer/grid/select")
public class MyCustomerGridSelectController extends BaseController {
@Resource
private MyCustomerGridSelectService myCustomerGridSelectService;
@ApiOperation("我的客户行政网格下拉框")
@Log(title = "我的客户行政网格下拉框")
@GetMapping("/region")
public AjaxResult getRegionGridList(@RequestParam String gridLevel, @RequestParam String opsDept) {
return AjaxResult.success(myCustomerGridSelectService.getRegionGridList(gridLevel, opsDept));
}
@ApiOperation("我的客户虚拟网格下拉框")
@Log(title = "我的客户虚拟网格下拉框")
@GetMapping("/virtual")
public AjaxResult getVirtualGridList(@RequestParam String opsDept) {
return AjaxResult.success(myCustomerGridSelectService.getVirtualGridList(opsDept));
}
@ApiOperation("我的客户特色网格下拉框")
@Log(title = "我的客户虚拟网格下拉框")
@GetMapping("/draw")
public AjaxResult getDrawGridList(@RequestParam String opsDept) {
return AjaxResult.success(myCustomerGridSelectService.getDrawGridList(opsDept));
}
}

View File

@@ -0,0 +1,291 @@
package com.ruoyi.ibs.customerselect.domain;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class BusinessExportVo {
/** 客户标签 */
@Excel(name = "客户分类",readConverterExp = "0=个人,1=商户,2=企业")
private String custPattern;
/** 企业名称 */
@Excel(name = "企业名称")
private String custName;
@Excel(name = "归属总行网格名称")
private String regionTopGridName;
@Excel(name = "归属支行网格名称")
private String regionSecGridName;
/** 归属支行 */
@Excel(name = "行政网格归属支行")
private String belongBranchName;
/** 归属网点 */
@Excel(name = "行政网格归属网点")
private String belongOutletName;
@Excel(name = "归属自定义地图网格名称")
private String drawGridName;
@Excel(name = "自定义地图网格归属支行")
private String drawBranchNames;
@Excel(name = "自定义地图网格归属网点")
private String drawOutletNames;
@Excel(name = "自定义地图网格归属客户经理")
private String drawUserNames;
/**
* 归属 网格客户经理名,多个按照逗号 隔开
*/
@Excel(name = "行政网格归属客户经理")
private String belongUserNameList;
@Excel(name = "归属自定义名单网格名称")
private String virtualGridName;
@Excel(name = "自定义名单网格归属支行")
private String virtualBranchNames;
@Excel(name = "自定义名单网格归属网点")
private String virtualOutletNames;
@Excel(name = "自定义名单网格归属客户经理")
private String virtualUserNames;
/** 法人姓名 */
@Excel(name = "法人姓名")
private String lpName;
/** 法人电话 */
@Excel(name = "法人电话")
private String custPhone;
/** 客户类型 */
@Excel(name = "客户类型",readConverterExp = "0=存量,1=潜在,2=暂无")
// @Excel(name = "客户类型")
private String custType ;
/** 产品标签 */
// @Excel(name = "产品标签")
@Excel(name = "产品标签",readConverterExp = "000=暂无,100=存款,010=贷款,001=中收,110=存款、贷款,101=存款、中收,011=贷款、中收,111=存款、贷款、中收")
private String custTag;
/** 企业规模 */
@Excel(name = "企业规模",readConverterExp = "0=小型,1=中型,2=大型,3=微型,4=其他")
// @Excel(name = "企业规模")
private String custScale;
//企业业务指标
/**
* 活期存款余额
*/
@Excel(name = "活期存款余额(元)")
private String hqCurBalance;
/**
* 保证金存款余额
*/
@Excel(name = "保证金存款余额(元)")
private String bzCurBalance;
/**
* 是否授信
*/
@Excel(name = "是否授信")
private String isCredit;
/**
* 贷款余额
*/
@Excel(name = "贷款余额(元)")
private String loanBalanceCny;
/**
* 贷款年日均
*/
@Excel(name = "贷款年日均(元)")
private String loanYearDailyaverage;
/**
* 是否普惠签约
*/
@Excel(name = "是否合同签约")
private String isHtqy;
/**
* 是否有签发承兑汇票
*/
@Excel(name = "是否有签发承兑汇票")
private String financeProd716OpenFlag;
/**
* 承兑汇票余额
*/
@Excel(name = "承兑汇票余额(元)")
private String financeProd716Balance;
/**
* 是否有贴现业务
*/
@Excel(name = "是否有贴现业务")
private String financeProd711OpenFlag;
/**
* 贴现金额
*/
@Excel(name = "贴现金额(元)")
private String financeProd711Balance;
/**
* 是否有保函业务
*/
@Excel(name = "是否有保函业务")
private String intlBussinessJcbhOpenFlag;
/**
* 是否为有效代发工资客户
*/
@Excel(name = "是否为有效代发工资客户")
private String isUstr;
/**
* 月均代发工资笔数
*/
@Excel(name = "月均代发工资笔数")
private String ustrCountPerM;
/**
* 月均代发工资金额(元)
*/
@Excel(name = "月均代发工资金额(元)")
private String ustrBalM;
/**
* 是否代扣电费
*/
@Excel(name = "是否代扣电费")
private String elecchargeSignFlag;
/**
* 是否代扣水费
*/
@Excel(name = "是否代扣水费")
private String waterchargeSignFlag;
/**
* 是否代扣税费
*/
@Excel(name = "是否代扣税费")
private String taxdeductionSignFlag;
/**
* 是否票据宝签约
*/
@Excel(name = "是否票据宝签约")
private String pjb;
/**
* 是否财资宝签约
*/
@Excel(name = "是否财资宝签约")
private String czb;
/**
* 是否收付宝签约
*/
@Excel(name = "是否收付宝签约")
private String sfb;
/**
* 是否贸融宝签约
*/
@Excel(name = "是否贸融宝签约")
private String mrb;
/**
* 是否数字生态产品签约
*/
@Excel(name = "是否数字生态产品签约")
private String szst;
/**
* 是否开户
*/
@Excel(name = "是否开户")
private String isOpenSts;
/**
* 是否国际结算业务
*/
@Excel(name = "是否国际结算业务")
private String intlBussinessOpenFlag;
/**
* 是否有远期结算汇业务
*/
@Excel(name = "是否有远期结算汇业务")
private String intlBussiness325OpenFlag;
public String getCustPattern() {
return custPattern;
}
public void setCustPattern(String custPattern) {
this.custPattern = custPattern;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getBelongBranchName() {
return belongBranchName;
}
public void setBelongBranchName(String belongBranchName) {
this.belongBranchName = belongBranchName;
}
public String getBelongOutletName() {
return belongOutletName;
}
public void setBelongOutletName(String belongOutletName) {
this.belongOutletName = belongOutletName;
}
public String getLpName() {
return lpName;
}
public void setLpName(String lpName) {
this.lpName = lpName;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getBelongUserNameList() {
return belongUserNameList;
}
public void setBelongUserNameList(String belongUserNameList) {
this.belongUserNameList = belongUserNameList;
}
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getCustTag() {
return custTag;
}
public void setCustTag(String custTag) {
this.custTag = custTag;
}
public String getCustScale() {
return custScale;
}
public void setCustScale(String custScale) {
this.custScale = custScale;
}
}

View File

@@ -0,0 +1,27 @@
package com.ruoyi.ibs.customerselect.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
public class ContinuousParam extends BaseEntity {
private String key;
private List<String> value;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public List<String> getValue() {
return value;
}
public void setValue(List<String> value) {
this.value = value;
}
}

View File

@@ -0,0 +1,773 @@
package com.ruoyi.ibs.customerselect.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 客户基本信息对象 sys_customer_basedata
*
* @author ruoyi
* @date 2024-09-10
*/
@Data
public class CustBaseInfo extends BaseEntity
{
/** id */
private Long id;
/** 客户标签 */
@NotNull(message = "客户标签不能为空")
@Excel(name = "客户分类",readConverterExp = "0=个人,1=商户,2=企业")
private String custPattern = "0";
/** 客户类型 */
@NotNull(message = "客户类型不能为空")
@Excel(name = "客户类型",readConverterExp = "0=存量,1=潜在")
private String custType = "2";
/** 产品标签 */
@NotNull(message = "产品标签不能为空")
@Excel(name = "产品标签",readConverterExp = "100=存款,010=贷款,001=中收,110=存款、贷款,101=存款、中收,011=贷款、中收,111=存款、贷款、中收")
private String custTag = "111";
/** 企业规模 */
@NotNull(message = "企业规模不能为空")
@Excel(name = "企业规模",readConverterExp = "0=无,1=小型,2=中型,3=大型")
private String custScale;
//规模小型
private String custScale1;
//规模中型
private String custScale2;
//规模大型
private String custScale3;
//规模微型
private String custScale0;
private String opsDept;
private String custLevel;
private List<String> custLevelList;
private String cmpmUserName;
private String deptCode;
private boolean isHead;
public boolean isHead() {
return isHead;
}
public void setHead(boolean head) {
isHead = head;
}
public List<String> getCustScaleList() {
return custScaleList;
}
public void setCustScaleList(List<String> custScaleList) {
this.custScaleList = custScaleList;
}
private List<String> custScaleList;
/** 企业名称 */
@Excel(name = "企业名称")
private String custName;
@Excel(name = "归属总行网格名称")
private String regionTopGridName;
@Excel(name = "归属支行网格名称")
private String regionSecGridName;
/** 归属支行 */
@Excel(name = "行政网格归属支行")
private String belongBranchName;
/** 归属网点 */
@Excel(name = "行政网格归属网点")
private String belongOutletName;
/**
* 归属 网格客户经理名,多个按照逗号 隔开
*/
@Excel(name = "行政网格归属客户经理")
private String belongUserNameList;
/** 管护客户经理 */
private String manageUserName;
/** 网格客户经理 */
private String belongUserName;
/** 法人姓名 */
private String lpName;
/** 法人电话 */
private String custPhone;
/** 注册资本 */
private String custCapital;
/** 是否贷款 */
private String loanTag;
/** 客户状态 */
private String status;
/** 归属机构 */
private Long userDeptId;
private Long deptId;
private Long outletsId;
private Long userId;
private String userName;
private String custId;
int num;
int size;
int start;
int end;
String latitude;
String longitude;
private List<Long> regionTopGridIds;
private List<Long> regionSecGridIds;
private List<Long> virtualGridIds;
private List<Long> drawGridIds;
private Boolean isSelectGrid;
private String regionBranchNames;
private String regionOutletNames;
private String regionUserNames;
@Excel(name = "归属自定义地图网格名称")
private String drawGridName;
@Excel(name = "自定义地图网格归属支行")
private String drawBranchNames;
@Excel(name = "自定义地图网格归属网点")
private String drawOutletNames;
@Excel(name = "自定义地图网格归属客户经理")
private String drawUserNames;
@Excel(name = "归属自定义名单网格名称")
private String virtualGridName;
@Excel(name = "自定义名单网格归属支行")
private String virtualBranchNames;
@Excel(name = "自定义名单网格归属网点")
private String virtualOutletNames;
@Excel(name = "自定义名单网格归属客户经理")
private String virtualUserNames;
//个人商户业务指标
/**
* 活期存款余额
*/
@Excel(name = "活期存款余额(元)")
private String curBalD;
/**
* 定期存款余额
*/
@Excel(name = "定期存款余额(元)")
private String curBalT;
/**
* 贷款余额
*/
@Excel(name = "贷款余额(元)")
private String balLoan;
/**
* 五级不良贷款余额
*/
@Excel(name = "五级不良贷款余额(元)")
private String curBal5Bad;
/**
* 活期存款年日均
*/
@Excel(name = "活期存款年日均(元)")
private String curDAve;
/**
* 定期存款年日均
*/
@Excel(name = "定期存款年日均(元)")
private String curTAve;
/**
* 贷款年日均
*/
@Excel(name = "贷款年日均(元)")
private String loanAve;
/**
* 是否建档
*/
@Excel(name = "是否建档")
private String isPh;
/**
* 是否授信
*/
@Excel(name = "是否授信")
private String isSx;
/**
* 是否合同签约
*/
@Excel(name = "是否合同签约")
private String isYxht;
/**
* 是否持有信用卡
*/
@Excel(name = "是否持有信用卡")
private String isXyk;
/**
* 是否开通丰收互联
*/
@Excel(name = "是否开通丰收互联")
private String fshl;
/**
* 是否办理收单
*/
@Excel(name = "是否办理收单")
private String isSd;
/**
* 是否办理etc
*/
@Excel(name = "是否办理etc")
private String etc;
/**
* 是否代扣电费
*/
@Excel(name = "是否代扣电费")
private String dian;
/**
* 是否贷款黑名单
*/
@Excel(name = "是否贷款黑名单")
private String isBlack;
/**
* 是否五级不良贷款客户
*/
@Excel(name = "是否五级不良贷款客户")
private String isBad;
//企业业务指标
/**
* 活期存款余额
*/
@Excel(name = "活期存款余额(元)")
private String hqCurBalance;
/**
* 保证金存款余额
*/
@Excel(name = "保证金存款余额(元)")
private String bzCurBalance;
/**
* 是否授信
*/
@Excel(name = "是否授信")
private String isCredit;
/**
* 贷款余额
*/
@Excel(name = "贷款余额(元)")
private String loanBalanceCny;
/**
* 贷款年日均
*/
@Excel(name = "贷款年日均(元)")
private String loanYearDailyaverage;
/**
* 是否普惠签约
*/
@Excel(name = "是否合同签约")
private String isHtqy;
/**
* 是否有签发承兑汇票
*/
@Excel(name = "是否有签发承兑汇票")
private String financeProd716OpenFlag;
/**
* 承兑汇票余额
*/
@Excel(name = "承兑汇票余额(元)")
private String financeProd716Balance;
/**
* 是否有贴现业务
*/
@Excel(name = "是否有贴现业务")
private String financeProd711OpenFlag;
/**
* 贴现金额
*/
@Excel(name = "贴现金额(元)")
private String financeProd711Balance;
/**
* 是否有保函业务
*/
@Excel(name = "是否有保函业务")
private String intlBussinessJcbhOpenFlag;
/**
* 是否为有效代发工资客户
*/
@Excel(name = "是否为有效代发工资客户")
private String isUstr;
/**
* 月均代发工资笔数
*/
@Excel(name = "月均代发工资笔数")
private String ustrCountPerM;
/**
* 月均代发工资金额(元)
*/
@Excel(name = "月均代发工资金额(元)")
private String ustrBalM;
/**
* 是否代扣电费
*/
@Excel(name = "是否代扣电费")
private String elecchargeSignFlag;
/**
* 是否代扣水费
*/
@Excel(name = "是否代扣水费")
private String waterchargeSignFlag;
/**
* 是否代扣税费
*/
@Excel(name = "是否代扣税费")
private String taxdeductionSignFlag;
/**
* 是否票据宝签约
*/
@Excel(name = "是否票据宝签约")
private String pjb;
/**
* 是否财资宝签约
*/
@Excel(name = "是否财资宝签约")
private String czb;
/**
* 是否收付宝签约
*/
@Excel(name = "是否收付宝签约")
private String sfb;
/**
* 是否贸融宝签约
*/
@Excel(name = "是否贸融宝签约")
private String mrb;
/**
* 是否数字生态产品签约
*/
@Excel(name = "是否数字生态产品签约")
private String szst;
/**
* 是否开户
*/
@Excel(name = "是否开户")
private String isOpenSts;
/**
* 是否国际结算业务
*/
@Excel(name = "是否国际结算业务")
private String intlBussinessOpenFlag;
/**
* 是否有远期结算汇业务
*/
@Excel(name = "是否有远期结算汇业务")
private String intlBussiness325OpenFlag;
private String socialCreditCode;
private String custLocation;
private String custGender;
private String custIsn;
private String searchStr;
private String custIdc;
public String getCustIdc() {
return custIdc;
}
public void setCustIdc(String custIdc) {
this.custIdc = custIdc;
}
public String getBelongUserNameList() {
return belongUserNameList;
}
public void setBelongUserNameList(String belongUserNameList) {
this.belongUserNameList = belongUserNameList;
}
public String getOpsDept() {
return opsDept;
}
public void setOpsDept(String opsDept) {
this.opsDept = opsDept;
}
public String getCustScale1() {
return custScale1;
}
public void setCustScale1(String custScale1) {
this.custScale1 = custScale1;
}
public String getCustScale2() {
return custScale2;
}
public void setCustScale2(String custScale2) {
this.custScale2 = custScale2;
}
public String getCustScale3() {
return custScale3;
}
public void setCustScale3(String custScale3) {
this.custScale3 = custScale3;
}
public String getCustScale0() {
return custScale0;
}
public void setCustScale0(String custScale0) {
this.custScale0 = custScale0;
}
public String getLatitude() {
return latitude;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@NotBlank(message = "客户标签不能为空")
public String getCustPattern() {
return custPattern;
}
public void setCustPattern(String custPattern) {
this.custPattern = custPattern;
}
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getCustTag() {
return custTag;
}
public void setCustTag(String custTag) {
this.custTag = custTag;
}
public String getCustScale() {
return custScale;
}
public void setCustScale(String custScale) {
this.custScale = custScale;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getBelongBranchName() {
return belongBranchName;
}
public void setBelongBranchName(String belongBranchName) {
this.belongBranchName = belongBranchName;
}
public String getBelongOutletName() {
return belongOutletName;
}
public void setBelongOutletName(String belongOutletName) {
this.belongOutletName = belongOutletName;
}
public String getManageUserName() {
return manageUserName;
}
public void setManageUserName(String manageUserName) {
this.manageUserName = manageUserName;
}
public String getBelongUserName() {
return belongUserName;
}
public void setBelongUserName(String belongUserName) {
this.belongUserName = belongUserName;
}
public String getLpName() {
return lpName;
}
public void setLpName(String lpName) {
this.lpName = lpName;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getCustCapital() {
return custCapital;
}
public void setCustCapital(String custCapital) {
this.custCapital = custCapital;
}
public String getLoanTag() {
return loanTag;
}
public void setLoanTag(String loanTag) {
this.loanTag = loanTag;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Long getUserDeptId() {
return userDeptId;
}
public void setUserDeptId(Long userDeptId) {
this.userDeptId = userDeptId;
}
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getOutletsId() {
return outletsId;
}
public void setOutletsId(Long outletsId) {
this.outletsId = outletsId;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
private List<ContinuousParam> continuousParams; //连续型指标
private List<DiscreteParam> discreteParams; //离散型指标
private String perMetric;
public List<ContinuousParam> getContinuousParams() {
return continuousParams;
}
public void setContinuousParams(List<ContinuousParam> continuousParams) {
this.continuousParams = continuousParams;
}
public List<DiscreteParam> getDiscreteParams() {
return discreteParams;
}
public void setDiscreteParams(List<DiscreteParam> discreteParams) {
this.discreteParams = discreteParams;
}
public String getPerMetric() {
return perMetric;
}
public void setPerMetric(String perMetric) {
this.perMetric = perMetric;
}
public String getSocialCreditCode() {
return socialCreditCode;
}
public void setSocialCreditCode(String socialCreditCode) {
this.socialCreditCode = socialCreditCode;
}
public String getCustLocation() {
return custLocation;
}
public void setCustLocation(String custLocation) {
this.custLocation = custLocation;
}
public String getCustGender() {
return custGender;
}
public void setCustGender(String custGender) {
this.custGender = custGender;
}
public String getCustIsn() {
return custIsn;
}
public void setCustIsn(String custIsn) {
this.custIsn = custIsn;
}
public String getSearchStr() {
return searchStr;
}
public void setSearchStr(String searchStr) {
this.searchStr = searchStr;
}
@Override
public String toString() {
return "CustBaseInfo{" +
"id=" + id +
", custPattern='" + custPattern + '\'' +
", custType='" + custType + '\'' +
", custTag='" + custTag + '\'' +
", custScale='" + custScale + '\'' +
", custName='" + custName + '\'' +
", belongBranchName='" + belongBranchName + '\'' +
", belongOutletName='" + belongOutletName + '\'' +
", manageUserName='" + manageUserName + '\'' +
", belongUserName=" + belongUserName +
", lpName='" + lpName + '\'' +
", custPhone='" + custPhone + '\'' +
", custCapital='" + custCapital + '\'' +
", loanTag='" + loanTag + '\'' +
", status='" + status + '\'' +
", userDeptId=" + userDeptId +
'}';
}
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.ibs.customerselect.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @Author 吴凯程
* @Date 2025/11/27
**/
@Data
public class CustCsvTag {
/** 主键 */
@ApiModelProperty(value = "主键",notes = "")
@TableId(type = IdType.AUTO)
private Long id ;
/** 机构号 */
@ApiModelProperty(value = "机构号",notes = "")
private String headId ;
/** 客户号 */
@ApiModelProperty(value = "证件号",notes = "")
private String custIdc ;
/** 文件id */
@ApiModelProperty(value = "文件id",notes = "")
private String fileId ;
/** 更新日期 */
@ApiModelProperty(value = "更新日期",notes = "")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime ;
}

View File

@@ -0,0 +1,48 @@
package com.ruoyi.ibs.customerselect.domain;
public class CustInfoDeleteFromAnchor {
/** 客户类型 */
private String custType;
/** 客户号 */
private String custId;
/** 客户证件类型 */
private String custIdType;
/** 证件号 */
private String legalId;
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getCustIdType() {
return custIdType;
}
public void setCustIdType(String custIdType) {
this.custIdType = custIdType;
}
public String getLegalId() {
return legalId;
}
public void setLegalId(String legalId) {
this.legalId = legalId;
}
}

View File

@@ -0,0 +1,167 @@
package com.ruoyi.ibs.customerselect.domain;
import java.util.Date;
/**
* 客户基本信息对象 custInfoUpdateFromAnchor
*
* @author ruoyi
* @date 2024-10-29
*/
public class CustInfoUpdateFromAnchor {
/** 客户类型 */
private String custType;
/** 客户id */
private String custId;
/** 证件类型 */
private String custIdType;
/** 锚点名称 */
private String anchorName;
/** 所在行业 */
private String belongBusiness;
/** 创建人 */
private String updateBy;
/** 创建机构 */
private String updateOrg;
/** 证件号 */
private String legalId;
/** 客户内码 */
private String custIsn;
/** 地址 */
private String address;
/** 详细地址 */
private String addressDetail;
/** 归属行政区划编码 */
private String regionCode;
/** 创建时间 */
private Date updateTime;
private String addressName;
public String getAddressName() {
return addressName;
}
public void setAddressName(String addressName) {
this.addressName = addressName;
}
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getCustIdType() {
return custIdType;
}
public void setCustIdType(String custIdType) {
this.custIdType = custIdType;
}
public String getAnchorName() {
return anchorName;
}
public void setAnchorName(String anchorName) {
this.anchorName = anchorName;
}
public String getBelongBusiness() {
return belongBusiness;
}
public void setBelongBusiness(String belongBusiness) {
this.belongBusiness = belongBusiness;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy;
}
public String getUpdateOrg() {
return updateOrg;
}
public void setUpdateOrg(String updateOrg) {
this.updateOrg = updateOrg;
}
public String getLegalId() {
return legalId;
}
public void setLegalId(String legalId) {
this.legalId = legalId;
}
public String getCustIsn() {
return custIsn;
}
public void setCustIsn(String custIsn) {
this.custIsn = custIsn;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getAddressDetail() {
return addressDetail;
}
public void setAddressDetail(String addressDetail) {
this.addressDetail = addressDetail;
}
public String getRegionCode() {
return regionCode;
}
public void setRegionCode(String regionCode) {
this.regionCode = regionCode;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.ibs.customerselect.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class CustListSearchVo extends BaseEntity {
private List<Map<String,Object>> continuousParams; //连续型
private List<Map<String,Object>> discreteParams; //离散型
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.customerselect.domain;
import lombok.Data;
@Data
public class CustTag {
private Long id;
/**
* 客户标签名称
*/
private String custTagName;
/**
* 一级标签
*/
private String custTagLevel1;
/**
* 二级标签
*/
private String custTagLevel2;
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.customerselect.domain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class CustTagDTO {
@ApiModelProperty(value = "客户号")
private String custId;
@ApiModelProperty(value = "客户标签列表,仅仅传点亮的即可")
private List<CustTag> custTagList;
private String createBy;
@ApiModelProperty(value = "自建标签")
private List<CustTag> newCustTags;
@ApiModelProperty(value = "标签类型")
private String custTagType;
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.ibs.customerselect.domain;
import com.ruoyi.common.core.domain.BaseEntity;
public class DiscreteParam extends BaseEntity {
private String key;
private String value;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}

View File

@@ -0,0 +1,696 @@
package com.ruoyi.ibs.customerselect.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 网格汇总统计_公司对象 grid_cmpm_count_gongsi_965
*
* @author ruoyi
* @date 2025-03-22
*/
public class GridSummarCount extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 统计日期 */
@Excel(name = "统计日期")
private String dt;
/** 一级网格名称 */
@Excel(name = "一级网格名称")
private String gridName;
/** 二级网格名称 */
@Excel(name = "二级网格名称")
private String gridName2;
/** 镇/街道 */
@Excel(name = "镇/街道")
private String town;
/** 归属支行 */
@Excel(name = "归属支行")
private String deptId;
/** 归属网点 */
@Excel(name = "归属网点")
private String outletsId;
/** 归属客户经理 */
@Excel(name = "归属客户经理")
private String userName;
/** 入格客户数 */
@Excel(name = "入格客户数")
private Integer custNum;
/** 活期存款余额 */
@Excel(name = "活期存款余额")
private String hqCurBalance;
/** 保证金存款余额 */
@Excel(name = "保证金存款余额")
private String bzCurBalance;
/** 贷款余额 */
@Excel(name = "贷款余额")
private String loanBalanceCny;
/** 贴现余额 */
@Excel(name = "贴现余额")
private String financeProd711Balance;
/** 承兑汇票余额 */
@Excel(name = "承兑汇票余额")
private String financeProd716Balance;
/** 贷款年日均 */
@Excel(name = "贷款年日均")
private String loanYearDailyaverage;
/** 普惠签约率 */
@Excel(name = "普惠签约率")
private String phRat;
/** 签发承兑汇票率 */
@Excel(name = "签发承兑汇票率")
private String qfcdRat;
/** 贴现业务率 */
@Excel(name = "贴现业务率")
private String txRat;
/** 保函业务率 */
@Excel(name = "保函业务率")
private String bhRat;
/** 有效代发工资率 */
@Excel(name = "有效代发工资率")
private String yxdfgzRat;
/** 代扣电费率 */
@Excel(name = "代扣电费率")
private String dkdfRat;
/** 代扣水费率 */
@Excel(name = "代扣水费率")
private String dksfRat;
/** 代扣税费率 */
@Excel(name = "代扣税费率")
private String dkshfRat;
/** 票据宝签约率 */
@Excel(name = "票据宝签约率")
private String pjbRat;
/** 财资宝签约率 */
@Excel(name = "财资宝签约率")
private String czbRat;
/** 收付宝签约率 */
@Excel(name = "收付宝签约率")
private String sfbRat;
/** 贸融宝签约率 */
@Excel(name = "贸融宝签约率")
private String mrbRat;
/** 数字生态产品签约率 */
@Excel(name = "数字生态产品签约率")
private String szstRat;
/** 开户率 */
@Excel(name = "开户率")
private String khRat;
/** 国际结算业务率 */
@Excel(name = "国际结算业务率")
private String gjjsywRat;
/** 远期结算汇业务率 */
@Excel(name = "远期结算汇业务率")
private String yqjshRat;
/** 普惠签约数 */
@Excel(name = "普惠签约数")
private Integer phNum;
/** 签发承兑汇票数 */
@Excel(name = "签发承兑汇票数")
private Integer qfcdNum;
/** 贴现业务数 */
@Excel(name = "贴现业务数")
private Integer txNum;
/** 保函业务数 */
@Excel(name = "保函业务数")
private Integer bhNum;
/** 有效代发工资数 */
@Excel(name = "有效代发工资数")
private Integer yxdfgzNum;
/** 代扣电费数 */
@Excel(name = "代扣电费数")
private Integer dkdfNum;
/** 代扣水费数 */
@Excel(name = "代扣水费数")
private Integer dksfNum;
/** 代扣税费数 */
@Excel(name = "代扣税费数")
private Integer dkshfNum;
/** 票据宝签约数 */
@Excel(name = "票据宝签约数")
private Integer pjbNum;
/** 财资宝签约数 */
@Excel(name = "财资宝签约数")
private Integer czbNum;
/** 收付宝签约数 */
@Excel(name = "收付宝签约数")
private Integer sfbNum;
/** 贸融宝签约数 */
@Excel(name = "贸融宝签约数")
private Integer mrbNum;
/** 数字生态产品签约数 */
@Excel(name = "数字生态产品签约数")
private Integer szstNum;
/** 开户数 */
@Excel(name = "开户数")
private Integer khNum;
/** 国际结算业务数 */
@Excel(name = "国际结算业务数")
private Integer gjjsywNum;
/** 远期结算汇业务数 */
@Excel(name = "远期结算汇业务数")
private Integer yqjshNum;
/** 归属行政区划编码 */
@Excel(name = "归属行政区划编码")
private String regionCode;
/** 部室归属 0零售 1公司 2运管 */
@Excel(name = "部室归属 0零售 1公司 2运管")
private String opsDept;
public void setDt(String dt)
{
this.dt = dt;
}
public String getDt()
{
return dt;
}
public void setGridName(String gridName)
{
this.gridName = gridName;
}
public String getGridName()
{
return gridName;
}
public void setGridName2(String gridName2)
{
this.gridName2 = gridName2;
}
public String getGridName2()
{
return gridName2;
}
public void setTown(String town)
{
this.town = town;
}
public String getTown()
{
return town;
}
public void setDeptId(String deptId)
{
this.deptId = deptId;
}
public String getDeptId()
{
return deptId;
}
public void setOutletsId(String outletsId)
{
this.outletsId = outletsId;
}
public String getOutletsId()
{
return outletsId;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public String getUserName()
{
return userName;
}
public void setCustNum(Integer custNum)
{
this.custNum = custNum;
}
public Integer getCustNum()
{
return custNum;
}
public void setHqCurBalance(String hqCurBalance)
{
this.hqCurBalance = hqCurBalance;
}
public String getHqCurBalance()
{
return hqCurBalance;
}
public void setBzCurBalance(String bzCurBalance)
{
this.bzCurBalance = bzCurBalance;
}
public String getBzCurBalance()
{
return bzCurBalance;
}
public void setLoanBalanceCny(String loanBalanceCny)
{
this.loanBalanceCny = loanBalanceCny;
}
public String getLoanBalanceCny()
{
return loanBalanceCny;
}
public void setFinanceProd711Balance(String financeProd711Balance)
{
this.financeProd711Balance = financeProd711Balance;
}
public String getFinanceProd711Balance()
{
return financeProd711Balance;
}
public void setFinanceProd716Balance(String financeProd716Balance)
{
this.financeProd716Balance = financeProd716Balance;
}
public String getFinanceProd716Balance()
{
return financeProd716Balance;
}
public void setLoanYearDailyaverage(String loanYearDailyaverage)
{
this.loanYearDailyaverage = loanYearDailyaverage;
}
public String getLoanYearDailyaverage()
{
return loanYearDailyaverage;
}
public void setPhRat(String phRat)
{
this.phRat = phRat;
}
public String getPhRat()
{
return phRat;
}
public void setQfcdRat(String qfcdRat)
{
this.qfcdRat = qfcdRat;
}
public String getQfcdRat()
{
return qfcdRat;
}
public void setTxRat(String txRat)
{
this.txRat = txRat;
}
public String getTxRat()
{
return txRat;
}
public void setBhRat(String bhRat)
{
this.bhRat = bhRat;
}
public String getBhRat()
{
return bhRat;
}
public void setYxdfgzRat(String yxdfgzRat)
{
this.yxdfgzRat = yxdfgzRat;
}
public String getYxdfgzRat()
{
return yxdfgzRat;
}
public void setDkdfRat(String dkdfRat)
{
this.dkdfRat = dkdfRat;
}
public String getDkdfRat()
{
return dkdfRat;
}
public void setDksfRat(String dksfRat)
{
this.dksfRat = dksfRat;
}
public String getDksfRat()
{
return dksfRat;
}
public void setDkshfRat(String dkshfRat)
{
this.dkshfRat = dkshfRat;
}
public String getDkshfRat()
{
return dkshfRat;
}
public void setPjbRat(String pjbRat)
{
this.pjbRat = pjbRat;
}
public String getPjbRat()
{
return pjbRat;
}
public void setCzbRat(String czbRat)
{
this.czbRat = czbRat;
}
public String getCzbRat()
{
return czbRat;
}
public void setSfbRat(String sfbRat)
{
this.sfbRat = sfbRat;
}
public String getSfbRat()
{
return sfbRat;
}
public void setMrbRat(String mrbRat)
{
this.mrbRat = mrbRat;
}
public String getMrbRat()
{
return mrbRat;
}
public void setSzstRat(String szstRat)
{
this.szstRat = szstRat;
}
public String getSzstRat()
{
return szstRat;
}
public void setKhRat(String khRat)
{
this.khRat = khRat;
}
public String getKhRat()
{
return khRat;
}
public void setGjjsywRat(String gjjsywRat)
{
this.gjjsywRat = gjjsywRat;
}
public String getGjjsywRat()
{
return gjjsywRat;
}
public void setYqjshRat(String yqjshRat)
{
this.yqjshRat = yqjshRat;
}
public String getYqjshRat()
{
return yqjshRat;
}
public void setPhNum(Integer phNum)
{
this.phNum = phNum;
}
public Integer getPhNum()
{
return phNum;
}
public void setQfcdNum(Integer qfcdNum)
{
this.qfcdNum = qfcdNum;
}
public Integer getQfcdNum()
{
return qfcdNum;
}
public void setTxNum(Integer txNum)
{
this.txNum = txNum;
}
public Integer getTxNum()
{
return txNum;
}
public void setBhNum(Integer bhNum)
{
this.bhNum = bhNum;
}
public Integer getBhNum()
{
return bhNum;
}
public void setYxdfgzNum(Integer yxdfgzNum)
{
this.yxdfgzNum = yxdfgzNum;
}
public Integer getYxdfgzNum()
{
return yxdfgzNum;
}
public void setDkdfNum(Integer dkdfNum)
{
this.dkdfNum = dkdfNum;
}
public Integer getDkdfNum()
{
return dkdfNum;
}
public void setDksfNum(Integer dksfNum)
{
this.dksfNum = dksfNum;
}
public Integer getDksfNum()
{
return dksfNum;
}
public void setDkshfNum(Integer dkshfNum)
{
this.dkshfNum = dkshfNum;
}
public Integer getDkshfNum()
{
return dkshfNum;
}
public void setPjbNum(Integer pjbNum)
{
this.pjbNum = pjbNum;
}
public Integer getPjbNum()
{
return pjbNum;
}
public void setCzbNum(Integer czbNum)
{
this.czbNum = czbNum;
}
public Integer getCzbNum()
{
return czbNum;
}
public void setSfbNum(Integer sfbNum)
{
this.sfbNum = sfbNum;
}
public Integer getSfbNum()
{
return sfbNum;
}
public void setMrbNum(Integer mrbNum)
{
this.mrbNum = mrbNum;
}
public Integer getMrbNum()
{
return mrbNum;
}
public void setSzstNum(Integer szstNum)
{
this.szstNum = szstNum;
}
public Integer getSzstNum()
{
return szstNum;
}
public void setKhNum(Integer khNum)
{
this.khNum = khNum;
}
public Integer getKhNum()
{
return khNum;
}
public void setGjjsywNum(Integer gjjsywNum)
{
this.gjjsywNum = gjjsywNum;
}
public Integer getGjjsywNum()
{
return gjjsywNum;
}
public void setYqjshNum(Integer yqjshNum)
{
this.yqjshNum = yqjshNum;
}
public Integer getYqjshNum()
{
return yqjshNum;
}
public void setRegionCode(String regionCode)
{
this.regionCode = regionCode;
}
public String getRegionCode()
{
return regionCode;
}
public void setOpsDept(String opsDept)
{
this.opsDept = opsDept;
}
public String getOpsDept()
{
return opsDept;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("dt", getDt())
.append("gridName", getGridName())
.append("gridName2", getGridName2())
.append("town", getTown())
.append("deptId", getDeptId())
.append("outletsId", getOutletsId())
.append("userName", getUserName())
.append("custNum", getCustNum())
.append("hqCurBalance", getHqCurBalance())
.append("bzCurBalance", getBzCurBalance())
.append("loanBalanceCny", getLoanBalanceCny())
.append("financeProd711Balance", getFinanceProd711Balance())
.append("financeProd716Balance", getFinanceProd716Balance())
.append("loanYearDailyaverage", getLoanYearDailyaverage())
.append("phRat", getPhRat())
.append("qfcdRat", getQfcdRat())
.append("txRat", getTxRat())
.append("bhRat", getBhRat())
.append("yxdfgzRat", getYxdfgzRat())
.append("dkdfRat", getDkdfRat())
.append("dksfRat", getDksfRat())
.append("dkshfRat", getDkshfRat())
.append("pjbRat", getPjbRat())
.append("czbRat", getCzbRat())
.append("sfbRat", getSfbRat())
.append("mrbRat", getMrbRat())
.append("szstRat", getSzstRat())
.append("khRat", getKhRat())
.append("gjjsywRat", getGjjsywRat())
.append("yqjshRat", getYqjshRat())
.append("phNum", getPhNum())
.append("qfcdNum", getQfcdNum())
.append("txNum", getTxNum())
.append("bhNum", getBhNum())
.append("yxdfgzNum", getYxdfgzNum())
.append("dkdfNum", getDkdfNum())
.append("dksfNum", getDksfNum())
.append("dkshfNum", getDkshfNum())
.append("pjbNum", getPjbNum())
.append("czbNum", getCzbNum())
.append("sfbNum", getSfbNum())
.append("mrbNum", getMrbNum())
.append("szstNum", getSzstNum())
.append("khNum", getKhNum())
.append("gjjsywNum", getGjjsywNum())
.append("yqjshNum", getYqjshNum())
.append("regionCode", getRegionCode())
.append("opsDept", getOpsDept())
.toString();
}
}

View File

@@ -0,0 +1,58 @@
package com.ruoyi.ibs.customerselect.domain;
public class GroupListVo {
/** 清单ID */
private String groupId;
/** 清单名称 */
private String groupName;
/** 清单类型 */
private String groupType;
/** 创建机构 */
private String createRole;
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getGroupType() {
return groupType;
}
public void setGroupType(String groupType) {
this.groupType = groupType;
}
public String getCreateRole() {
return createRole;
}
public void setCreateRole(String createRole) {
this.createRole = createRole;
}
@Override
public String toString() {
return "GroupListVo{" +
"groupId='" + groupId + '\'' +
", groupName='" + groupName + '\'' +
", groupType='" + groupType + '\'' +
", createRole='" + createRole + '\'' +
'}';
}
}

View File

@@ -0,0 +1,350 @@
package com.ruoyi.ibs.customerselect.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 清单列表查询信息 ListSelectByUser
*
* @author ruoyi
* @date 2024-09-25
*/
public class ListSelectByUser {
/** 客户标签 */
@NotNull(message = "客户标签不能为空")
private String custPattern;
/** 用户机构 */
private Long userDept;
/** 用户id */
private Long userId;
/** 清单来源 */
private String createRole;
/** 清单类型 */
private String groupType;
/** 客户类型 */
private String custType;
/** 清单ID */
private String groupId;
/** 清单名称 */
private String groupName;
/** 客户数 */
private Long customerNum;
/** 关联活动id */
private String campaignId;
/** 关联活动名称 */
private String campaignName;
/** 开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
private Date startTime;
/** 结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endTime;
/** 活动状态 */
private String actionStatus;
/** 紧急程度 */
private String campaignDegree;
/** 分配机构id */
private Long deptId;
/** 分配机构 */
private String belongDept;
private String belongOutlet;
/** 分配结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
private Date claimEndTime;
/** 认领类型 */
private String claimType;
/** 机构领取状态 */
private String orgClaimStatus;
/** 机构分配状态 */
private String orgDistributeStatus;
/** 客户经理认领率 */
private String receiveSitustion = "0%";
/** 是否二次推送 */
private String secondPushStatus;
/** 执行人 0-机构1-个人2-混合分配 */
private String executer;
/** 更新时间 */
private Date updateTime;
/** 创建时间 */
private Date createTime;
/** 当前时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
private Date nowTime;
@Excel(name = "考核目标")
private String checkTarget;
@Excel(name = "下发支行")
private String sendDept;
public String getSendDept() {
return sendDept;
}
public void setSendDept(String sendDept) {
this.sendDept = sendDept;
}
public String getCustPattern() {
return custPattern;
}
public void setCustPattern(String custPattern) {
this.custPattern = custPattern;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getUserDept() {
return userDept;
}
public void setUserDept(Long userDept) {
this.userDept = userDept;
}
public String getCreateRole() {
return createRole;
}
public void setCreateRole(String createRole) {
this.createRole = createRole;
}
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getGroupType() {
return groupType;
}
public void setGroupType(String groupType) {
this.groupType = groupType;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public Long getCustomerNum() {
return customerNum;
}
public void setCustomerNum(Long customerNum) {
this.customerNum = customerNum;
}
public String getCampaignId() {
return campaignId;
}
public void setCampaignId(String campaignId) {
this.campaignId = campaignId;
}
public String getCampaignName() {
return campaignName;
}
public void setCampaignName(String campaignName) {
this.campaignName = campaignName;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getActionStatus() {
return actionStatus;
}
public void setActionStatus(String actionStatus) {
this.actionStatus = actionStatus;
}
public String getCampaignDegree() {
return campaignDegree;
}
public void setCampaignDegree(String campaignDegree) {
this.campaignDegree = campaignDegree;
}
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
public String getBelongDept() {
return belongDept;
}
public void setBelongDept(String belongDept) {
this.belongDept = belongDept;
}
public Date getClaimEndTime() {
return claimEndTime;
}
public void setClaimEndTime(Date claimEndTime) {
this.claimEndTime = claimEndTime;
}
public String getClaimType() {
return claimType;
}
public void setClaimType(String claimType) {
this.claimType = claimType;
}
public String getOrgClaimStatus() {
return orgClaimStatus;
}
public void setOrgClaimStatus(String orgClaimStatus) {
this.orgClaimStatus = orgClaimStatus;
}
public String getOrgDistributeStatus() {
return orgDistributeStatus;
}
public void setOrgDistributeStatus(String orgDistributeStatus) {
this.orgDistributeStatus = orgDistributeStatus;
}
public String getReceiveSitustion() {
return receiveSitustion;
}
public void setReceiveSitustion(String receiveSitustion) {
this.receiveSitustion = receiveSitustion;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getSecondPushStatus() {
return secondPushStatus;
}
public void setSecondPushStatus(String secondPushStatus) {
this.secondPushStatus = secondPushStatus;
}
public String getExecuter() {
return executer;
}
public void setExecuter(String executer) {
this.executer = executer;
}
public Date getNowTime() {
return nowTime;
}
public void setNowTime(Date nowTime) {
this.nowTime = nowTime;
}
public String getCheckTarget() {
return checkTarget;
}
public void setCheckTarget(String checkTarget) {
this.checkTarget = checkTarget;
}
public String getBelongOutlet() {
return belongOutlet;
}
public void setBelongOutlet(String belongOutlet) {
this.belongOutlet = belongOutlet;
}
}

View File

@@ -0,0 +1,368 @@
package com.ruoyi.ibs.customerselect.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import javax.validation.constraints.NotNull;
import java.util.Date;
public class ListSelectForUser {
/** 客户标签 */
@Excel(name = "客户类型:0-个人1-商户2-企业")
@NotNull(message = "客户标签不能为空")
private String custPattern;
/** 用户机构 */
private Long userDept;
/** 用户id */
private Long userId;
/** 清单来源 */
@Excel(name = "清单来源 0-总行1-支行")
private String createRole;
/** 清单ID */
@Excel(name = "清单ID")
private String groupId;
/** 清单名称 */
@Excel(name = "清单名称")
private String groupName;
/** 关联活动id */
@Excel(name = "关联活动id")
private String campaignId;
/** 关联活动名称 */
@Excel(name = "关联活动名称")
private String campaignName;
/** 客户号 */
@Excel(name = "客户号")
private String custId;
/** 客户名 */
@Excel(name = "客户名")
private String custName;
/** 经营者名称 */
@Excel(name = "经营者名称(用于商户或企业客户)")
private String lpName;
/** 客户手机号 */
@Excel(name = "客户手机号")
private String custPhone;
/** 客户证件号 */
@Excel(name = "客户证件号(用于个人客户)")
private String custIdc;
/** 社会统一编码 */
@Excel(name = "社会统一编码(用于商户或企业客户)")
private String socialCreditCode;
/** 客户内码 */
@Excel(name = "客户内码")
private String custIsn;
/** 开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date startTime;
/** 结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date endTime;
/** 紧急程度 */
@Excel(name = "紧急程度")
private String campaignDegree;
/** 分配机构id */
@Excel(name = "分配机构id")
private Long deptId;
/** 分配机构名称 */
@Excel(name = "分配机构名称")
private String belongDept;
/** 认领类型 */
@Excel(name = "认领类型 0-强制认领1-可选认领")
private String claimType;
/** 机构领取状态 */
@Excel(name = "机构领取状态 0-待认领1-已认领")
private String orgClaimStatus;
/** 机构分配状态 */
@Excel(name = "机构分配状态 0-待分配1-已分配")
private String orgDistributeStatus;
/** 客户经理分配状态 */
@Excel(name = "客户经理分配状态 0-待分配1-已分配")
private String custClaimStatus;
/** 所属一级网格(导出) */
@Excel(name = "所属一级网格")
private String topGridName;
/** 所属二级网格(导出) */
@Excel(name = "所属二级网格")
private String secGridName;
/** 所属客户经理(导出) */
@Excel(name = "所属客户经理")
private String userName;
/** 所属网点(导出) */
@Excel(name = "所属网点")
private String outlets;
@Excel(name = "考核目标")
private String checkTarget;
//是否是网点查询0-否1-是
private String isOutlet;
public String getIsOutlet() {
return isOutlet;
}
public void setIsOutlet(String isOutlet) {
this.isOutlet = isOutlet;
}
public String getCustPattern() {
return custPattern;
}
public void setCustPattern(String custPattern) {
this.custPattern = custPattern;
}
public Long getUserDept() {
return userDept;
}
public void setUserDept(Long userDept) {
this.userDept = userDept;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getCreateRole() {
return createRole;
}
public void setCreateRole(String createRole) {
this.createRole = createRole;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getCampaignId() {
return campaignId;
}
public void setCampaignId(String campaignId) {
this.campaignId = campaignId;
}
public String getCampaignName() {
return campaignName;
}
public void setCampaignName(String campaignName) {
this.campaignName = campaignName;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getLpName() {
return lpName;
}
public void setLpName(String lpName) {
this.lpName = lpName;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getCustIdc() {
return custIdc;
}
public void setCustIdc(String custIdc) {
this.custIdc = custIdc;
}
public String getSocialCreditCode() {
return socialCreditCode;
}
public void setSocialCreditCode(String socialCreditCode) {
this.socialCreditCode = socialCreditCode;
}
public String getCustIsn() {
return custIsn;
}
public void setCustIsn(String custIsn) {
this.custIsn = custIsn;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getCampaignDegree() {
return campaignDegree;
}
public void setCampaignDegree(String campaignDegree) {
this.campaignDegree = campaignDegree;
}
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
public String getBelongDept() {
return belongDept;
}
public void setBelongDept(String belongDept) {
this.belongDept = belongDept;
}
public String getClaimType() {
return claimType;
}
public void setClaimType(String claimType) {
this.claimType = claimType;
}
public String getOrgClaimStatus() {
return orgClaimStatus;
}
public void setOrgClaimStatus(String orgClaimStatus) {
this.orgClaimStatus = orgClaimStatus;
}
public String getOrgDistributeStatus() {
return orgDistributeStatus;
}
public void setOrgDistributeStatus(String orgDistributeStatus) {
this.orgDistributeStatus = orgDistributeStatus;
}
public String getCustClaimStatus() {
return custClaimStatus;
}
public void setCustClaimStatus(String custClaimStatus) {
this.custClaimStatus = custClaimStatus;
}
public String getTopGridName() {
return topGridName;
}
public void setTopGridName(String topGridName) {
this.topGridName = topGridName;
}
public String getSecGridName() {
return secGridName;
}
public void setSecGridName(String secGridName) {
this.secGridName = secGridName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getOutlets() {
return outlets;
}
public void setOutlets(String outlets) {
this.outlets = outlets;
}
public String getCheckTarget() {
return checkTarget;
}
public void setCheckTarget(String checkTarget) {
this.checkTarget = checkTarget;
}
}

View File

@@ -0,0 +1,257 @@
package com.ruoyi.ibs.customerselect.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import java.util.Date;
public class ListSelectForUserExportBusiness {
/** 清单来源 */
@Excel(name = "清单来源",readConverterExp = "0=总行,1=支行")
private String createRole;
/** 清单名称 */
@Excel(name = "清单名称")
private String groupName;
/** 关联活动名称 */
@Excel(name = "任务名称")
private String campaignName;
/** 客户号 */
@Excel(name = "客户号")
private String custId;
/** 客户名 */
@Excel(name = "企业名称")
private String custName;
/** 经营者名称 */
@Excel(name = "法人代表姓名")
private String lpName;
/** 客户手机号 */
@Excel(name = "法人代表手机号")
private String custPhone;
/** 社会统一编码 */
@Excel(name = "证件号")
private String socialCreditCode;
/** 客户内码 */
@Excel(name = "客户内码")
private String custIsn;
/** 开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date startTime;
/** 结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date endTime;
/** 紧急程度 */
@Excel(name = "紧急程度")
private String campaignDegree;
/** 分配机构名称 */
@Excel(name = "推送支行")
private String belongDept;
/** 认领类型 */
@Excel(name = "认领类型",readConverterExp = "0=强制认领,1=可选认领")
private String claimType;
/** 机构领取状态 */
@Excel(name = "机构认领状态",readConverterExp = "0=待认领,1=已认领,/=/")
private String orgClaimStatus;
/** 机构分配状态 */
@Excel(name = "机构分配状态",readConverterExp = "0=待分配,1=已分配,/=/")
private String orgDistributeStatus;
/** 客户经理分配状态 */
@Excel(name = "客户经理分配状态",readConverterExp = "0=待分配,1=已分配")
private String custClaimStatus;
/** 所属客户经理(导出) */
@Excel(name = "推送客户经理")
private String userName;
/** 所属网点(导出) */
@Excel(name = "推送网点")
private String outlets;
@Excel(name = "考核目标")
private String checkTarget;
public String getCreateRole() {
return createRole;
}
public void setCreateRole(String createRole) {
this.createRole = createRole;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getCampaignName() {
return campaignName;
}
public void setCampaignName(String campaignName) {
this.campaignName = campaignName;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getLpName() {
return lpName;
}
public void setLpName(String lpName) {
this.lpName = lpName;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getSocialCreditCode() {
return socialCreditCode;
}
public void setSocialCreditCode(String socialCreditCode) {
this.socialCreditCode = socialCreditCode;
}
public String getCustIsn() {
return custIsn;
}
public void setCustIsn(String custIsn) {
this.custIsn = custIsn;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getCampaignDegree() {
return campaignDegree;
}
public void setCampaignDegree(String campaignDegree) {
this.campaignDegree = campaignDegree;
}
public String getBelongDept() {
return belongDept;
}
public void setBelongDept(String belongDept) {
this.belongDept = belongDept;
}
public String getClaimType() {
return claimType;
}
public void setClaimType(String claimType) {
this.claimType = claimType;
}
public String getOrgClaimStatus() {
return orgClaimStatus;
}
public void setOrgClaimStatus(String orgClaimStatus) {
this.orgClaimStatus = orgClaimStatus;
}
public String getOrgDistributeStatus() {
return orgDistributeStatus;
}
public void setOrgDistributeStatus(String orgDistributeStatus) {
this.orgDistributeStatus = orgDistributeStatus;
}
public String getCustClaimStatus() {
return custClaimStatus;
}
public void setCustClaimStatus(String custClaimStatus) {
this.custClaimStatus = custClaimStatus;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getOutlets() {
return outlets;
}
public void setOutlets(String outlets) {
this.outlets = outlets;
}
public String getCheckTarget() {
return checkTarget;
}
public void setCheckTarget(String checkTarget) {
this.checkTarget = checkTarget;
}
}

View File

@@ -0,0 +1,257 @@
package com.ruoyi.ibs.customerselect.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import java.util.Date;
public class ListSelectForUserExportMerchant {
/** 清单来源 */
@Excel(name = "清单来源",readConverterExp = "0=总行,1=支行")
private String createRole;
/** 清单名称 */
@Excel(name = "清单名称")
private String groupName;
/** 关联活动名称 */
@Excel(name = "任务名称")
private String campaignName;
/** 客户号 */
@Excel(name = "客户号")
private String custId;
/** 客户名 */
@Excel(name = "商户名称")
private String custName;
/** 经营者名称 */
@Excel(name = "经营者姓名")
private String lpName;
/** 客户手机号 */
@Excel(name = "经营者手机号")
private String custPhone;
/** 社会统一编码 */
@Excel(name = "证件号")
private String socialCreditCode;
/** 客户内码 */
@Excel(name = "客户内码")
private String custIsn;
/** 开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date startTime;
/** 结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date endTime;
/** 紧急程度 */
@Excel(name = "紧急程度")
private String campaignDegree;
/** 分配机构名称 */
@Excel(name = "推送支行")
private String belongDept;
/** 认领类型 */
@Excel(name = "认领类型",readConverterExp = "0=强制认领,1=可选认领")
private String claimType;
/** 机构领取状态 */
@Excel(name = "机构认领状态",readConverterExp = "0=待认领,1=已认领,/=/")
private String orgClaimStatus;
/** 机构分配状态 */
@Excel(name = "机构分配状态",readConverterExp = "0=待分配,1=已分配,/=/")
private String orgDistributeStatus;
/** 客户经理分配状态 */
@Excel(name = "客户经理分配状态",readConverterExp = "0=待分配,1=已分配")
private String custClaimStatus;
/** 所属客户经理(导出) */
@Excel(name = "推送客户经理")
private String userName;
/** 所属网点(导出) */
@Excel(name = "推送网点")
private String outlets;
@Excel(name = "考核目标")
private String checkTarget;
public String getCreateRole() {
return createRole;
}
public void setCreateRole(String createRole) {
this.createRole = createRole;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getCampaignName() {
return campaignName;
}
public void setCampaignName(String campaignName) {
this.campaignName = campaignName;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getLpName() {
return lpName;
}
public void setLpName(String lpName) {
this.lpName = lpName;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getSocialCreditCode() {
return socialCreditCode;
}
public void setSocialCreditCode(String socialCreditCode) {
this.socialCreditCode = socialCreditCode;
}
public String getCustIsn() {
return custIsn;
}
public void setCustIsn(String custIsn) {
this.custIsn = custIsn;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getCampaignDegree() {
return campaignDegree;
}
public void setCampaignDegree(String campaignDegree) {
this.campaignDegree = campaignDegree;
}
public String getBelongDept() {
return belongDept;
}
public void setBelongDept(String belongDept) {
this.belongDept = belongDept;
}
public String getClaimType() {
return claimType;
}
public void setClaimType(String claimType) {
this.claimType = claimType;
}
public String getOrgClaimStatus() {
return orgClaimStatus;
}
public void setOrgClaimStatus(String orgClaimStatus) {
this.orgClaimStatus = orgClaimStatus;
}
public String getOrgDistributeStatus() {
return orgDistributeStatus;
}
public void setOrgDistributeStatus(String orgDistributeStatus) {
this.orgDistributeStatus = orgDistributeStatus;
}
public String getCustClaimStatus() {
return custClaimStatus;
}
public void setCustClaimStatus(String custClaimStatus) {
this.custClaimStatus = custClaimStatus;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getOutlets() {
return outlets;
}
public void setOutlets(String outlets) {
this.outlets = outlets;
}
public String getCheckTarget() {
return checkTarget;
}
public void setCheckTarget(String checkTarget) {
this.checkTarget = checkTarget;
}
}

View File

@@ -0,0 +1,245 @@
package com.ruoyi.ibs.customerselect.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import java.util.Date;
public class ListSelectForUserExportRetail {
/** 清单来源 */
@Excel(name = "清单来源",readConverterExp = "0=总行,1=支行")
private String createRole;
/** 清单名称 */
@Excel(name = "清单名称")
private String groupName;
/** 关联活动名称 */
@Excel(name = "任务名称")
private String campaignName;
/** 客户号 */
@Excel(name = "客户号")
private String custId;
/** 客户名 */
@Excel(name = "客户名")
private String custName;
/** 客户手机号 */
@Excel(name = "客户手机号")
private String custPhone;
/** 客户证件号 */
@Excel(name = "证件号")
private String custIdc;
/** 客户内码 */
@Excel(name = "客户内码")
private String custIsn;
/** 开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date startTime;
/** 结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date endTime;
/** 紧急程度 */
@Excel(name = "紧急程度")
private String campaignDegree;
/** 分配机构名称 */
@Excel(name = "推送支行")
private String belongDept;
/** 认领类型 */
@Excel(name = "认领类型",readConverterExp = "0=强制认领,1=可选认领")
private String claimType;
/** 机构领取状态 */
@Excel(name = "机构认领状态",readConverterExp = "0=待认领,1=已认领,/=/")
private String orgClaimStatus;
/** 机构分配状态 */
@Excel(name = "机构分配状态",readConverterExp = "0=待分配,1=已分配,/=/")
private String orgDistributeStatus;
/** 客户经理分配状态 */
@Excel(name = "客户经理分配状态",readConverterExp = "0=待分配,1=已分配")
private String custClaimStatus;
/** 所属客户经理(导出) */
@Excel(name = "推送客户经理")
private String userName;
/** 所属网点(导出) */
@Excel(name = "推送网点")
private String outlets;
@Excel(name = "考核目标")
private String checkTarget;
public String getCreateRole() {
return createRole;
}
public void setCreateRole(String createRole) {
this.createRole = createRole;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getCampaignName() {
return campaignName;
}
public void setCampaignName(String campaignName) {
this.campaignName = campaignName;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getCustIdc() {
return custIdc;
}
public void setCustIdc(String custIdc) {
this.custIdc = custIdc;
}
public String getCustIsn() {
return custIsn;
}
public void setCustIsn(String custIsn) {
this.custIsn = custIsn;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getCampaignDegree() {
return campaignDegree;
}
public void setCampaignDegree(String campaignDegree) {
this.campaignDegree = campaignDegree;
}
public String getBelongDept() {
return belongDept;
}
public void setBelongDept(String belongDept) {
this.belongDept = belongDept;
}
public String getClaimType() {
return claimType;
}
public void setClaimType(String claimType) {
this.claimType = claimType;
}
public String getOrgClaimStatus() {
return orgClaimStatus;
}
public void setOrgClaimStatus(String orgClaimStatus) {
this.orgClaimStatus = orgClaimStatus;
}
public String getOrgDistributeStatus() {
return orgDistributeStatus;
}
public void setOrgDistributeStatus(String orgDistributeStatus) {
this.orgDistributeStatus = orgDistributeStatus;
}
public String getCustClaimStatus() {
return custClaimStatus;
}
public void setCustClaimStatus(String custClaimStatus) {
this.custClaimStatus = custClaimStatus;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getOutlets() {
return outlets;
}
public void setOutlets(String outlets) {
this.outlets = outlets;
}
public String getCheckTarget() {
return checkTarget;
}
public void setCheckTarget(String checkTarget) {
this.checkTarget = checkTarget;
}
}

View File

@@ -0,0 +1,237 @@
package com.ruoyi.ibs.customerselect.domain;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
@Data
public class MerchantExportVo {
/** 客户标签 */
@Excel(name = "客户分类",readConverterExp = "0=个人,1=商户,2=企业")
private String custPattern;
/** 企业名称 */
@Excel(name = "商户名称")
private String custName;
@Excel(name = "归属总行网格名称")
private String regionTopGridName;
@Excel(name = "归属支行网格名称")
private String regionSecGridName;
/** 归属支行 */
@Excel(name = "行政网格归属支行")
private String belongBranchName;
/** 归属网点 */
@Excel(name = "行政网格归属网点")
private String belongOutletName;
/**
* 归属 网格客户经理名,多个按照逗号 隔开
*/
@Excel(name = "行政网格归属客户经理")
private String belongUserNameList;
@Excel(name = "归属自定义地图网格名称")
private String drawGridName;
@Excel(name = "自定义地图网格归属支行")
private String drawBranchNames;
@Excel(name = "自定义地图网格归属网点")
private String drawOutletNames;
@Excel(name = "自定义地图网格归属客户经理")
private String drawUserNames;
@Excel(name = "归属自定义名单网格名称")
private String virtualGridName;
@Excel(name = "自定义名单网格归属支行")
private String virtualBranchNames;
@Excel(name = "自定义名单网格归属网点")
private String virtualOutletNames;
@Excel(name = "自定义名单网格归属客户经理")
private String virtualUserNames;
/** 经营者姓名 */
@Excel(name = "经营者姓名")
private String lpName;
/** 经营者电话 */
@Excel(name = "经营者电话")
private String custPhone;
/** 客户类型 */
@Excel(name = "客户类型",readConverterExp = "0=存量,1=潜在,2=暂无")
// @Excel(name = "客户类型")
private String custType ;
/** 产品标签 */
@Excel(name = "产品标签",readConverterExp = "000=暂无,100=存款,010=贷款,001=中收,110=存款、贷款,101=存款、中收,011=贷款、中收,111=存款、贷款、中收")
// @Excel(name = "产品标签")
private String custTag;
//个人商户业务指标
/**
* 活期存款余额
*/
@Excel(name = "活期存款余额(元)")
private String curBalD;
/**
* 定期存款余额
*/
@Excel(name = "定期存款余额(元)")
private String curBalT;
/**
* 贷款余额
*/
@Excel(name = "贷款余额(元)")
private String balLoan;
/**
* 五级不良贷款余额
*/
@Excel(name = "五级不良贷款余额(元)")
private String curBal5Bad;
/**
* 活期存款年日均
*/
@Excel(name = "活期存款年日均(元)")
private String curDAve;
/**
* 定期存款年日均
*/
@Excel(name = "定期存款年日均(元)")
private String curTAve;
/**
* 贷款年日均
*/
@Excel(name = "贷款年日均(元)")
private String loanAve;
/**
* 是否建档
*/
@Excel(name = "是否建档")
private String isPh;
/**
* 是否授信
*/
@Excel(name = "是否授信")
private String isSx;
/**
* 是否合同签约
*/
@Excel(name = "是否合同签约")
private String isYxht;
/**
* 是否持有信用卡
*/
@Excel(name = "是否持有信用卡")
private String isXyk;
/**
* 是否开通丰收互联
*/
@Excel(name = "是否开通丰收互联")
private String fshl;
/**
* 是否办理收单
*/
@Excel(name = "是否办理收单")
private String isSd;
/**
* 是否办理etc
*/
@Excel(name = "是否办理etc")
private String etc;
/**
* 是否代扣电费
*/
@Excel(name = "是否代扣电费")
private String dian;
/**
* 是否贷款黑名单
*/
@Excel(name = "是否贷款黑名单")
private String isBlack;
/**
* 是否五级不良贷款客户
*/
@Excel(name = "是否五级不良贷款客户")
private String isBad;
public String getCustPattern() {
return custPattern;
}
public void setCustPattern(String custPattern) {
this.custPattern = custPattern;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getBelongBranchName() {
return belongBranchName;
}
public void setBelongBranchName(String belongBranchName) {
this.belongBranchName = belongBranchName;
}
public String getBelongOutletName() {
return belongOutletName;
}
public void setBelongOutletName(String belongOutletName) {
this.belongOutletName = belongOutletName;
}
public String getLpName() {
return lpName;
}
public void setLpName(String lpName) {
this.lpName = lpName;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getBelongUserNameList() {
return belongUserNameList;
}
public void setBelongUserNameList(String belongUserNameList) {
this.belongUserNameList = belongUserNameList;
}
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getCustTag() {
return custTag;
}
public void setCustTag(String custTag) {
this.custTag = custTag;
}
}

View File

@@ -0,0 +1,96 @@
package com.ruoyi.ibs.customerselect.domain;
import lombok.Data;
@Data
public class MerchantMcspInfo {
private Long id;
private String custId;
/**
* 特约商户号
*/
private String custSmchno;
/**
* 收单产品
*/
private String productType;
/**
* 联系人
*/
private String contactName;
/**
* 联系电话
*/
private String contactPhone;
/**
* 商户类别码
*/
private String mchmcc;
/**
* 结算方式
*/
private String jsType;
/**
* 账户类别
*/
private String accountType;
/**
* 收单结算账户账号
*/
private String accountId;
/**
* 收单结算账户名称
*/
private String accountName;
/**
* 商户收单结算周期
*/
private String jsCycle;
/**
* 计费模式
*/
private String billMode;
/**
* 免费额度
*/
private String freeQuota;
/**
* 剩余免费额度
*/
private String rareFree;
/**
* 年收单笔数
*/
private String yearBillCount;
/**
* 年收单金额
*/
private String yearBillAmount;
/**
* 上月收单金额
*/
private String lastMonthBillAmount;
/**
* 上月收单笔数
*/
private String lastMonthBillCount;
/**
* 上月收单账户日均存款
*/
private String lastMonthAccountAvgAmount;
/**
* 收单账户手续费收取情况
*/
private String accountRareMsg;
/**
* 商户年日均存款
*/
private String accountYearAvgAmount;
/**
* 商户星级评定
*/
private String accountStar;
}

View File

@@ -0,0 +1,222 @@
package com.ruoyi.ibs.customerselect.domain;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
@Data
public class RetailExportVo {
/** 客户标签 */
@Excel(name = "客户分类",readConverterExp = "0=个人,1=商户,2=企业")
private String custPattern;
/** 企业名称 */
@Excel(name = "客户名称")
private String custName;
@Excel(name = "归属总行网格名称")
private String regionTopGridName;
@Excel(name = "归属支行网格名称")
private String regionSecGridName;
/** 归属支行 */
@Excel(name = "行政网格归属支行")
private String belongBranchName;
/** 归属网点 */
@Excel(name = "行政网格归属网点")
private String belongOutletName;
@Excel(name = "归属自定义地图网格名称")
private String drawGridName;
@Excel(name = "自定义地图网格归属支行")
private String drawBranchNames;
@Excel(name = "自定义地图网格归属网点")
private String drawOutletNames;
@Excel(name = "自定义地图网格归属客户经理")
private String drawUserNames;
/**
* 归属 网格客户经理名,多个按照逗号 隔开
*/
@Excel(name = "行政网格归属客户经理")
private String belongUserNameList;
@Excel(name = "归属自定义名单网格名称")
private String virtualGridName;
@Excel(name = "自定义名单网格归属支行")
private String virtualBranchNames;
@Excel(name = "自定义名单网格归属网点")
private String virtualOutletNames;
@Excel(name = "自定义名单网格归属客户经理")
private String virtualUserNames;
/** 经营者电话 */
@Excel(name = "客户电话")
private String custPhone;
/** 客户类型 */
@Excel(name = "客户类型",readConverterExp = "0=存量,1=潜在,2=暂无")
// @Excel(name = "客户类型")
private String custType ;
/** 产品标签 */
@Excel(name = "产品标签",readConverterExp = "000=暂无,100=存款,010=贷款,001=中收,110=存款、贷款,101=存款、中收,011=贷款、中收,111=存款、贷款、中收")
// @Excel(name = "产品标签")
private String custTag;
//个人商户业务指标
/**
* 活期存款余额
*/
@Excel(name = "活期存款余额(元)")
private String curBalD;
/**
* 定期存款余额
*/
@Excel(name = "定期存款余额(元)")
private String curBalT;
/**
* 贷款余额
*/
@Excel(name = "贷款余额(元)")
private String balLoan;
/**
* 五级不良贷款余额
*/
@Excel(name = "五级不良贷款余额(元)")
private String curBal5Bad;
/**
* 活期存款年日均
*/
@Excel(name = "活期存款年日均(元)")
private String curDAve;
/**
* 定期存款年日均
*/
@Excel(name = "定期存款年日均(元)")
private String curTAve;
/**
* 贷款年日均
*/
@Excel(name = "贷款年日均(元)")
private String loanAve;
/**
* 是否建档
*/
@Excel(name = "是否建档")
private String isPh;
/**
* 是否授信
*/
@Excel(name = "是否授信")
private String isSx;
/**
* 是否合同签约
*/
@Excel(name = "是否合同签约")
private String isYxht;
/**
* 是否持有信用卡
*/
@Excel(name = "是否持有信用卡")
private String isXyk;
/**
* 是否开通丰收互联
*/
@Excel(name = "是否开通丰收互联")
private String fshl;
/**
* 是否办理收单
*/
@Excel(name = "是否办理收单")
private String isSd;
/**
* 是否办理etc
*/
@Excel(name = "是否办理etc")
private String etc;
/**
* 是否代扣电费
*/
@Excel(name = "是否代扣电费")
private String dian;
/**
* 是否贷款黑名单
*/
@Excel(name = "是否贷款黑名单")
private String isBlack;
/**
* 是否五级不良贷款客户
*/
@Excel(name = "是否五级不良贷款客户")
private String isBad;
public String getCustPattern() {
return custPattern;
}
public String getCustName() {
return custName;
}
public void setCustPattern(String custPattern) {
this.custPattern = custPattern;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getBelongBranchName() {
return belongBranchName;
}
public void setBelongBranchName(String belongBranchName) {
this.belongBranchName = belongBranchName;
}
public String getBelongOutletName() {
return belongOutletName;
}
public void setBelongOutletName(String belongOutletName) {
this.belongOutletName = belongOutletName;
}
public String getBelongUserNameList() {
return belongUserNameList;
}
public void setBelongUserNameList(String belongUserNameList) {
this.belongUserNameList = belongUserNameList;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getCustTag() {
return custTag;
}
public void setCustTag(String custTag) {
this.custTag = custTag;
}
}

View File

@@ -0,0 +1,28 @@
package com.ruoyi.ibs.customerselect.domain.vo;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/5/9
**/
@Data
public class GridRelateVO {
private String custId;
private String gridNames;
private String branchNames;
private String outletNames;
private String userNames;
private String topGridName;
private String secGridName;
private String deptIds;
}

View File

@@ -0,0 +1,15 @@
package com.ruoyi.ibs.customerselect.domain.vo;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/5/8
**/
@Data
public class GridSelectVO {
private Long gridId;
private String gridName;
}

View File

@@ -0,0 +1,20 @@
package com.ruoyi.ibs.customerselect.domain.vo;
import lombok.Data;
/**
* @Author 吴凯程
* @Date 2025/5/9
**/
@Data
public class VirtualGridRelateVO {
private String gridNames;
private String branchNames;
private String outletsNames;
private String userNames;
}

View File

@@ -0,0 +1,14 @@
package com.ruoyi.ibs.customerselect.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ibs.customerselect.domain.CustCsvTag;
/**
* @Author 吴凯程
* @Date 2025/5/8
**/
public interface CustCsvTagMapper extends BaseMapper<CustCsvTag> {
}

View File

@@ -0,0 +1,245 @@
package com.ruoyi.ibs.customerselect.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ibs.customerselect.domain.CustBaseInfo;
import com.ruoyi.ibs.customerselect.domain.CustInfoDeleteFromAnchor;
import com.ruoyi.ibs.customerselect.domain.CustInfoUpdateFromAnchor;
import com.ruoyi.ibs.customerselect.domain.ListSelectForUser;
import com.ruoyi.ibs.grid.domain.dto.CustManageInfo;
import com.ruoyi.ibs.list.domain.CustInfoBusiness;
import com.ruoyi.ibs.list.domain.SysGroupCustomer;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 客户基本信息Mapper接口
*
* @author ruoyi
* @date 2024-09-11
*/
public interface CustInfoBusinessMapper extends BaseMapper<CustInfoBusiness>
{
/**
* 查询企业客户基本信息列表
*
* @param sysCustomerBasedata 企业客户基本信息
* @return 客户基本信息集合
*/
public List<CustInfoBusiness> selectCustInfoBusinessList(CustBaseInfo sysCustomerBasedata);
public List<CustInfoBusiness> selectCustInfoBusinessListHead(CustBaseInfo sysCustomerBasedata);
public List<CustInfoBusiness> selectCustInfoBusinessListOps(CustBaseInfo sysCustomerBasedata);
/**
* 使用行政区划查询客户数量
*
* @param gridId 企业客户基本信息
* @return 客户基本信息集合
*/
public Long selectBusinessNumByAdmin(@Param("gridId")Long gridId, @Param("userDept")Long userDept);
/**
* 使用机构id查询客户数量
*
* @param headDeptId 企业客户基本信息
* @return 客户基本信息集合
*/
public Long getBusinessNumByDeptId(Long headDeptId);
/**
* 使用经理id查询客户数量
*
* @param UserId 企业客户基本信息
* @return 客户基本信息集合
*/
public Long getBusinessNumByUserId(String UserId);
/**
* 使用行政区划查询未分配客户信息列表
*
* @param custManageInfo 企业客户基本信息
* @return 客户基本信息集合
*/
public List<CustInfoBusiness> selectCustInfoBusinessByAdminList(CustManageInfo custManageInfo);
/**
* 使用行政区划查询未分配客户信息列表
*
* @param custManageInfo 企业客户基本信息
* @return 客户基本信息集合
*/
public List<CustInfoBusiness> selectunDisCustByAdminList(CustManageInfo custManageInfo);
/**
* 使用虚拟网格查询未分配客户信息列表
*
* @param custManageInfo 企业客户基本信息
* @return 客户基本信息集合
*/
public List<CustInfoBusiness> selectCustInfoBusinessByVirtualList(CustManageInfo custManageInfo);
/**
* 使用虚拟网格查询未分配客户信息列表
*
* @param custManageInfo 企业客户基本信息
* @return 客户基本信息集合
*/
public List<CustInfoBusiness> selectunDisCustByVirtualList(CustManageInfo custManageInfo);
/**
* 查询企业客户基本信息
*
* @param id 企业客户基本信息主键
* @return 企业客户基本信息
*/
public CustInfoBusiness selectCustInfoBusinessById(Long id);
/**
* 查询企业客户基本信息列表
*
* @param custInfoBusiness 企业客户基本信息
* @return 企业客户基本信息集合
*/
public List<CustInfoBusiness> selectCustInfoBusinessListBykeyword(@Param("keyword") String keyword);
/**
* 查询企业客户基本信息列表
*
* @param custInfoBusiness 企业客户基本信息
* @return 企业客户基本信息集合
*/
public List<CustInfoBusiness> selectCustInfoBusinessListBykeywordBranchAndManager(@Param("keyword") String keyword,@Param("deptId")Long deptId,@Param("outletsId")Long outletsId,@Param("userId")Long userId,@Param("opsDept") String opsDept);
/**
* 新增企业客户基本信息
*
* @param custInfoBusiness 企业客户基本信息
* @return 结果
*/
public int insertCustInfoBusiness(CustInfoBusiness custInfoBusiness);
/**
* 修改企业客户基本信息
*
* @param custInfoBusiness 企业客户基本信息
* @return 结果
*/
public int updateCustInfoBusiness(CustInfoBusiness custInfoBusiness);
public int updateCustInfoBusinessLabel(CustInfoBusiness custInfoBusiness);
/**
* 删除企业客户基本信息
*
* @param id 企业客户基本信息主键
* @return 结果
*/
public int deleteCustInfoBusinessById(Long id);
/**
* 批量删除企业客户基本信息
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteCustInfoBusinessByIds(Long[] ids);
/**
* 查询企业客户基本信息
*
* @param custId 企业客户基本信息主键
* @return 企业客户基本信息
*/
public CustInfoBusiness selectCustInfoBusinessByCustId(String custId);
/**
* 根据统信码查询企业客户基本信息
* @param socialCreditCode
* @return
*/
public CustInfoBusiness selectCustInfoBusinessBySocialCreditCode(String socialCreditCode);
public List<CustInfoBusiness> selectCustInfoBusinessLists(CustInfoBusiness custInfoBusiness);
/**
* 使用证件号查询客户数量
*
* @param LegalId 企业客户基本信息
* @return 客户基本信息集合
*/
public Long getBusinessNumByLegalId(String LegalId);
/**
* 锚点更新客户信息
*
* @param custInfoUpdateFromAnchor 管户信息
* @return 结果
*/
public int updateBusinessByAnchor(CustInfoUpdateFromAnchor custInfoUpdateFromAnchor);
/**
* 锚点新增客户信息
*
* @param custInfoUpdateFromAnchor 客户信息
* @return 结果
*/
public int insertBusinessByAnchor(CustInfoUpdateFromAnchor custInfoUpdateFromAnchor);
/**
* 锚点删除客户信息
*
* @param custInfoDeleteFromAnchor 客户信息
* @return 结果
*/
public int deleteBusinessByAnchor(CustInfoDeleteFromAnchor custInfoDeleteFromAnchor);
/**
* 获取客群客户经营者名称
*
* @param listSelectForUser 清单名称或者活动名称关键词
* @return 客户经理
*/
public String getLpNameByCustId(ListSelectForUser listSelectForUser);
/**
* 使用客户号查询客户证件号
*
* @param custId 企业客户基本信息
* @return 客户基本信息集合
*/
public String getBusiIdcByCustId(String custId);
/**
* 使用查询行政网格客户信息列表
*
* @param custManageInfo 企业客户基本信息
* @return 客户基本信息集合
*/
public List<CustManageInfo> selectBusinessInfoByManage(CustManageInfo custManageInfo);
/**
* 查询企业客户基本信息
*
* @param id 企业客户基本信息主键
* @return 企业客户基本信息
*/
public CustInfoBusiness selectCustInfoBusinessByCustNameAndCustIdc(@Param("custName") String custName,@Param("custIdc") String custIdc);
/**
* 查询企业客户基本信息
*
* @param custId
* @return 企业客户基本信息
*/
public CustInfoBusiness selectCustInfoBusinessCustId(@Param("custId") String custId);
Long countByCode(@Param("code") String code, @Param("deptCode") String deptCode);
public int insertCustomersToBusinessByScCode(List<SysGroupCustomer> sysGroupCustomers);
List<CustInfoBusiness> selectRecord(String socialCreditCode);
}

View File

@@ -0,0 +1,28 @@
package com.ruoyi.ibs.customerselect.mapper;
import com.ruoyi.ibs.customerselect.domain.vo.GridRelateVO;
import com.ruoyi.ibs.customerselect.domain.vo.GridSelectVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Author 吴凯程
* @Date 2025/5/8
**/
public interface GridSelectMapper {
List<GridSelectVO> getRegionGridList(@Param("deptId") Long deptId, @Param("userName") String userName, @Param("gridLevel") String gridLevel, @Param("opsDept") String opsDept);
List<GridSelectVO> getVirtualGridList(@Param("deptId") Long deptId, @Param("userName") String userName, @Param("opsDept") String opsDept);
List<GridSelectVO> getDrawGridList(@Param("deptId") Long deptId, @Param("userName") String userName, @Param("opsDept") String opsDept);
List<GridRelateVO> getDrawGridRelate(@Param("custIds") List<String> custIds);
List<GridRelateVO> getRegionGridRelate(@Param("custIds") List<String> custIds);
List<GridRelateVO> getVirtualGridRelate(@Param("custIds") List<String> custIds, @Param("userName") String userName);
}

View File

@@ -0,0 +1,73 @@
package com.ruoyi.ibs.customerselect.mapper;
import java.util.List;
import java.util.Map;
import com.ruoyi.ibs.customerselect.domain.CustBaseInfo;
import com.ruoyi.ibs.customerselect.domain.GridSummarCount;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 网格汇总统计_公司Mapper接口
*
* @author ruoyi
* @date 2025-03-22
*/
@Mapper
public interface GridSummarCountMapper
{
/**
* 查询网格汇总统计_公司
*
* @param dt 网格汇总统计_公司主键
* @return 网格汇总统计_公司
*/
public GridSummarCount selectGridSummarCountByDt(String dt);
/**
* 查询网格汇总统计_公司列表
*
* @param GridSummarCount 网格汇总统计_公司
* @return 网格汇总统计_公司集合
*/
public List<GridSummarCount> selectGridSummarCountList(GridSummarCount GridSummarCount);
/**
* 新增网格汇总统计_公司
*
* @param GridSummarCount 网格汇总统计_公司
* @return 结果
*/
public int insertGridSummarCount(GridSummarCount GridSummarCount);
/**
* 修改网格汇总统计_公司
*
* @param GridSummarCount 网格汇总统计_公司
* @return 结果
*/
public int updateGridSummarCount(GridSummarCount GridSummarCount);
/**
* 删除网格汇总统计_公司
*
* @param dt 网格汇总统计_公司主键
* @return 结果
*/
public int deleteGridSummarCountByDt(String dt);
/**
* 批量删除网格汇总统计_公司
*
* @param dts 需要删除的数据主键集合
* @return 结果
*/
public int deleteGridSummarCountByDts(String[] dts);
List<Map<String,Object>> selectContinuousParams(CustBaseInfo sysCustomerBasedata);
List<Map<String,Object>> selectDiscreteParams(CustBaseInfo sysCustomerBasedata);
public String selectDictLabelByDictValue(@Param("dictValue") String dictValue);
}

View File

@@ -0,0 +1,8 @@
package com.ruoyi.ibs.customerselect.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ibs.customerselect.domain.MerchantMcspInfo;
public interface MerchantMcspInfoMapper extends BaseMapper<MerchantMcspInfo> {
}

Some files were not shown because too many files have changed in this diff Show More