Compare commits

...

62 Commits
main ... zzm1

Author SHA1 Message Date
dengliangliang 307c44154f 自检指标,应征凭证种类字典表 2025-12-11 16:46:18 +08:00
dengliangliang 4e888f7a6d 自检指标,主管税务机关和科分局代码,征收项目,字典表查询 2025-12-11 14:29:37 +08:00
dengliangliang 1cb890c81b 自检指标,字典表 2025-12-10 17:02:48 +08:00
zhangwenzan f873b8e878 fix: 2025-09-19 09:02:25 +08:00
ZZM f1bc56ddf9 查询工商登记开业信息 2025-09-18 16:07:48 +08:00
zhangwenzan 90c2e14fd1 fix: 行政区划 2025-09-18 14:22:39 +08:00
ZZM e8808e805c 查询工商登记开业信息 2025-09-17 18:35:53 +08:00
zhangwenzan 8dc69d4870 fix: 加密修改 2025-09-17 15:52:27 +08:00
zhangwenzan 16526e11e9 fix: 同步修改 2025-09-17 14:49:38 +08:00
zhangwenzan f80d75969d fix 2025-09-17 14:17:20 +08:00
zhangwenzan cfce3f4242 工商登记信息修改 2025-09-16 17:51:59 +08:00
zhangwenzan a2ff304ae0 修改同步添加联系人 2025-09-16 14:46:03 +08:00
zhangwenzan 1c43e1dd61 工商登记信息 2025-09-16 08:34:35 +08:00
zhangwenzan ae013c0ca2 加密 2025-09-12 17:26:00 +08:00
zhangwenzan ce525ad955 1 2025-09-12 16:13:30 +08:00
ZZM b2638f3552 同步失败企业参数表CRUD 2025-09-10 16:54:58 +08:00
ZZM 522db6ae2f 联系人姓名加密 2025-09-10 15:34:11 +08:00
ZZM 4e816a7209 联系人数据加密 2025-09-10 10:49:52 +08:00
ZZM b8d6718ec7 敏感数据加密和查看密文 2025-09-09 17:43:31 +08:00
zhangwenzan 0c99c66172 加密 2025-09-04 09:31:10 +08:00
zhangwenzan fc79b80e69 es加密 2025-08-28 15:26:06 +08:00
zhangwenzan 4d5ebd13e8 保存 2025-08-27 09:06:24 +08:00
ZZM d3e6975578 1.风险报告使用情况(新增字段)
2.wk_crm_corporate_portrait(企业形象)CRUD
2025-08-21 14:29:52 +08:00
ZZM bf9a905e1f 通过行业代码查询hy_dm表 2025-08-21 11:06:10 +08:00
ZZM 1a95c9284e 风险报告使用情况 2025-08-21 10:10:44 +08:00
ZZM b1b058a32a 税务机关代码、行政区划代码分页查询 2025-08-13 16:10:47 +08:00
ZZM 2ea64c2b3a 通过纳税人名称查询工商登记开业信息 2025-08-13 09:57:12 +08:00
ZZM 83679f2da6 查询工商登记开业信息 2025-08-12 10:32:12 +08:00
ZZM 999c1c533b 产品CRM税务接口API接入标准规范1.0 2025-08-01 09:30:39 +08:00
ZZM da4a7059f7 产品CRM税务接口API接入标准规范1.0 2025-07-31 16:21:59 +08:00
ZZM 39229c50aa 产品CRM税务接口API接入标准规范1.0 2025-07-30 10:32:27 +08:00
zhangwenzan 86966e75d9 fix:数据加密 2025-07-29 16:14:18 +08:00
ZZM 9dbe015e0c 税务预检使用情况(定时任务) 忘了删测试数据 2025-07-29 16:01:03 +08:00
ZZM b25ea618ee 税务预检使用情况(定时任务) 2025-07-29 15:59:51 +08:00
zhangwenzan c96663187e Merge branch 'test' into zzm1 2025-07-29 11:16:18 +08:00
ZZM 852f52a2b3 Crm税务接口 2025-07-29 11:15:16 +08:00
zhangwenzan 1924cc6cb3 fix:数据加密 2025-07-29 11:10:56 +08:00
zhangwenzan d5fa78dce2 Merge remote-tracking branch 'origin/zhouzhenmin' into test 2025-07-24 16:10:44 +08:00
zhangwenzan 971e4c42fb fix:构建请求 2025-07-24 16:07:43 +08:00
zhangwenzan 09076fe6a5 fix:构建请求 2025-07-24 16:07:12 +08:00
ZZM fa116ad31f 税务预检使用情况 2025-06-27 17:00:31 +08:00
ZZM 783e6aca1d 税务接口 2025-06-25 09:29:59 +08:00
ZZM c952344f46 税务接口 2025-06-24 16:07:50 +08:00
ZZM 11c92dcdd9 税务接口 2025-06-24 15:13:02 +08:00
zhangwenzan 949acc3020 Merge branch 'refs/heads/zzm' into test
# Conflicts:
#	crm/src/main/java/com/kakarote/crm/controller/CrmGetV3SysRiskDataController.java
2025-06-19 09:47:26 +08:00
ZZM cfd83a287f feat:通过日期获取使用用户数,活跃用户数,新增企业数,注册用户数。 2025-06-19 09:39:45 +08:00
zhangwenzan cbb79d172c fix:添加企业基本信息查询 2025-06-19 09:15:48 +08:00
zhangwenzan e1bfff6996 Merge pull request 'feat:配置文件dev' (#4) from zzm into test
Reviewed-on: #4
2025-06-17 10:07:11 +08:00
ZZM 355e3e56dd feat:配置文件dev 2025-06-17 10:05:42 +08:00
zhangwenzan 826af27d3b Merge pull request 'zzm' (#3) from zzm into test
Reviewed-on: #3
2025-06-17 09:31:35 +08:00
ZZM 7b0f857f36 feat:CRM税务接口 2025-06-16 17:18:26 +08:00
ZZM 2e4db533b6 feat:controller_CRUD、调用第三方接口 2025-06-13 14:39:59 +08:00
zhangwenzan 19382a309a Merge pull request 'feat:补充提交' (#2) from zzm into test
Reviewed-on: #2
2025-06-12 08:43:55 +08:00
ZZM 33aadb2cea feat:补充提交 2025-06-11 18:07:40 +08:00
zhangwenzan e11cfe65b3 Merge pull request 'zzm' (#1) from zzm into test
Reviewed-on: #1
2025-06-11 17:55:01 +08:00
ZZM 29dc79cda8 feat:调用V3系统的风险接口 2025-06-11 17:49:52 +08:00
ZZM 264bf69a4a feat:企业所得税年度申报crud、企业销项发票crud、纳税人资格crud、 税务机关crud、企业参保人数crud 2025-06-10 16:48:26 +08:00
ZZM 3003e1b3f3 feat:企业所得税年度申报crud、企业销项发票crud、纳税人资格crud、 税务机关crud、企业参保人数crud 2025-06-10 15:25:07 +08:00
ZZM ab77a916a8 feat:企业风险明细crud,企业纳税信用登记crud,企业税负率crud 2025-06-09 17:17:11 +08:00
ZZM 193261e47f feat:企业进项发票crud 2025-06-09 14:45:33 +08:00
zhangwenzan be905735c4 fix:添加企业基本信息查询 2025-06-06 16:56:48 +08:00
zhangwenzan d51175ebda fix:添加企业基本信息查询 2025-06-06 16:56:30 +08:00
1442 changed files with 15760 additions and 3462 deletions

View File

@ -11,11 +11,11 @@ spring:
pool:
max-active: 300
datasource:
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:47.99.60.88}:${DATASOURCE_PORT:3306}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3307}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
username: ${DATASOURCE_USERNAME:devuser}
password: ${DATASOURCE_PASSWORD:ckly@9069&Uk}
elasticsearch:
rest:
uris: 47.99.60.88:9200
uris: 127.0.0.1:9200
username:
password:

View File

@ -8,7 +8,7 @@ spring:
pool:
max-active: 300
datasource:
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3306}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3307}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
username: ${DATASOURCE_USERNAME:root}
password: ${DATASOURCE_PASSWORD:password}
elasticsearch:

View File

@ -8,7 +8,7 @@ spring:
pool:
max-active: 300
datasource:
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3306}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3307}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
username: ${DATASOURCE_USERNAME:root}
password: ${DATASOURCE_PASSWORD:password}
elasticsearch:

View File

@ -11,11 +11,11 @@ spring:
pool:
max-active: 300
datasource:
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:47.99.60.88}:${DATASOURCE_PORT:3306}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3307}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
username: ${DATASOURCE_USERNAME:devuser}
password: ${DATASOURCE_PASSWORD:ckly@9069&Uk}
elasticsearch:
rest:
uris: 47.99.60.88:9200
uris: 127.0.0.1:9200
username:
password:

View File

@ -8,6 +8,6 @@ spring:
pool:
max-active: 300
datasource:
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3306}/nacos?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3307}/nacos?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
username: ${DATASOURCE_USERNAME:root}
password: ${DATASOURCE_PASSWORD:password}

View File

@ -8,6 +8,6 @@ spring:
pool:
max-active: 300
datasource:
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3306}/nacos?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3307}/nacos?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
username: ${DATASOURCE_USERNAME:root}
password: ${DATASOURCE_PASSWORD:password}

View File

@ -11,11 +11,11 @@ spring:
pool:
max-active: 300
datasource:
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:47.99.60.88}:${DATASOURCE_PORT:3306}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3307}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
username: ${DATASOURCE_USERNAME:devuser}
password: ${DATASOURCE_PASSWORD:ckly@9069&Uk}
elasticsearch:
rest:
uris: 47.99.60.88:9200
uris: 127.0.0.1:9200
username:
password:

View File

@ -8,7 +8,7 @@ spring:
pool:
max-active: 300
datasource:
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3306}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3307}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
username: ${DATASOURCE_USERNAME:root}
password: ${DATASOURCE_PASSWORD:password}
elasticsearch:

View File

@ -8,7 +8,7 @@ spring:
pool:
max-active: 300
datasource:
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3306}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:127.0.0.1}:${DATASOURCE_PORT:3307}/wk_crm_single?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useAffectedRows=true
username: ${DATASOURCE_USERNAME:root}
password: ${DATASOURCE_PASSWORD:password}
elasticsearch:

View File

@ -75,4 +75,10 @@ public class Const implements Serializable {
public static final String ADMIN_USER_DEPT_CACHE_NAME = "ADMIN:USER:DEPT:CACHE:";
/**
* 加密前缀
*/
public static final String ENCRYPTED_PREFIX = "ENCRYPTED:";
}

View File

@ -26,6 +26,7 @@ public enum SubModelType {
CRM_RETURN_VISIT(28,"回访"),
CRM_PRODUCT(29,"产品"),
CRM_MARKETING(30,"市场活动"),
CRM_CORP_PORT(31,"企业画像"),
//oa
OA_CALENDAR(41,"日历"),
OA_LOG(42,"日志"),

View File

@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import com.kakarote.core.utils.BaseUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.type.TypeHandlerRegistry;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -22,11 +24,22 @@ public class MybatisPlusConfig {
return paginationInterceptor;
}
// @Bean
// public ConfigurationCustomizer configurationCustomizer() {
// return i -> i.setObjectWrapperFactory(new MybatisMapWrapperFactory());
// }
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return i -> i.setObjectWrapperFactory(new MybatisMapWrapperFactory());
return i -> {
i.setObjectWrapperFactory(new MybatisMapWrapperFactory());
// 注册敏感数据类型处理器
TypeHandlerRegistry registry = i.getTypeHandlerRegistry();
registry.register(SensitiveDataConverter.class);
};
}
@Bean
public IdentifierGenerator idGenerator() {
return new CustomIdGenerator();

View File

@ -0,0 +1,13 @@
package com.kakarote.core.feign.crm.service;
import com.kakarote.core.common.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@FeignClient(name = "crm" , contextId = "UserAnalyse")
public interface CrmUserAnalyseService {
@PostMapping("/crmGetV3Data/getTaxPreCheckUsage")
Result getTaxPreCheckUsage();
}

View File

@ -0,0 +1,163 @@
package com.kakarote.core.security;
import lombok.extern.slf4j.Slf4j;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.crypto.AEADBadTagException;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.GCMParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.Security;
import java.security.SecureRandom;
import java.util.Arrays;
import java.util.Base64;
@Slf4j
@Component
public class EncryptionService {
// AES-GCM参数配置
private static final int GCM_IV_LENGTH = 12;
private static final int GCM_TAG_LENGTH = 16;
private static final String AES_ALGORITHM = "AES/GCM/NoPadding";
private static final String AES_KEY_ALGORITHM = "AES";
// 系统主密钥(生产环境应从KMS获取)
@Value("${encryption.system-key}")
private String systemKey;
static {
// 注册BouncyCastle加密提供者
Security.addProvider(new BouncyCastleProvider());
}
/**
* AES加密
* @param plaintext 明文
* @return Base64编码的密文
*/
public String encryptAes(String plaintext) {
try {
// 生成随机IV
byte[] iv = new byte[GCM_IV_LENGTH];
SecureRandom random = new SecureRandom();
random.nextBytes(iv);
// 初始化密钥
SecretKey secretKey = new SecretKeySpec(Base64.getDecoder().decode(systemKey), AES_KEY_ALGORITHM);
// 初始化加密器
Cipher cipher = Cipher.getInstance(AES_ALGORITHM);
GCMParameterSpec parameterSpec = new GCMParameterSpec(GCM_TAG_LENGTH * 8, iv);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, parameterSpec);
// 执行加密
byte[] ciphertext = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8));
// 组合IV和密文
byte[] result = new byte[iv.length + ciphertext.length];
System.arraycopy(iv, 0, result, 0, iv.length);
System.arraycopy(ciphertext, 0, result, iv.length, ciphertext.length);
return Base64.getEncoder().encodeToString(result);
} catch (Exception e) {
log.error("AES加密失败", e);
throw new SecurityException("数据加密失败", e);
}
}
/**
* AES解密
* @param ciphertext Base64编码的密文
* @return 明文
*/
public String decryptAes(String ciphertext) {
try {
// 解码Base64密文
byte[] decoded = Base64.getDecoder().decode(ciphertext);
// 提取IV固定取前12字节
byte[] iv = new byte[GCM_IV_LENGTH];
System.arraycopy(decoded, 0, iv, 0, iv.length);
// 提取实际密文
byte[] encryptedData = new byte[decoded.length - iv.length];
System.arraycopy(decoded, iv.length, encryptedData, 0, encryptedData.length);
// 初始化密钥
SecretKey secretKey = new SecretKeySpec(Base64.getDecoder().decode(systemKey), AES_KEY_ALGORITHM);
// 初始化解密器
Cipher cipher = Cipher.getInstance(AES_ALGORITHM);
GCMParameterSpec parameterSpec = new GCMParameterSpec(GCM_TAG_LENGTH * 8, iv);
cipher.init(Cipher.DECRYPT_MODE, secretKey, parameterSpec);
// 执行解密
byte[] plaintext = cipher.doFinal(encryptedData);
return new String(plaintext, StandardCharsets.UTF_8);
} catch (Exception e) {
log.error("AES解密失败", e);
throw new SecurityException("数据解密失败", e);
}
}
public String deterministicDecryptAes(String ciphertext) {
try {
// 使用与加密相同的固定IV
byte[] fixedIv = new byte[GCM_IV_LENGTH];
Arrays.fill(fixedIv, (byte) 0x01);
// 初始化密钥
SecretKey secretKey = new SecretKeySpec(Base64.getDecoder().decode(systemKey), AES_KEY_ALGORITHM);
// 初始化解密器
Cipher cipher = Cipher.getInstance(AES_ALGORITHM);
GCMParameterSpec parameterSpec = new GCMParameterSpec(GCM_TAG_LENGTH * 8, fixedIv);
cipher.init(Cipher.DECRYPT_MODE, secretKey, parameterSpec);
// 解码Base64密文注意这里不包含IV
byte[] decoded = Base64.getDecoder().decode(ciphertext);
// 执行解密
byte[] plaintext = cipher.doFinal(decoded);
return new String(plaintext, StandardCharsets.UTF_8);
} catch (AEADBadTagException e) {
return decryptAes(ciphertext);
}catch (Exception e) {
log.error("确定性AES解密失败", e);
throw new SecurityException("数据解密失败", e);
}
}
/**
* 确定性AES加密用于查询场景
* 使用固定IV确保相同明文总是生成相同密文
*/
public String deterministicEncryptAes(String plaintext) {
try {
// 使用固定IV注意在生产环境中应考虑使用派生IV而不是固定IV
byte[] fixedIv = new byte[GCM_IV_LENGTH];
// 可以使用字段名或其他确定性数据来派生IV
Arrays.fill(fixedIv, (byte) 0x01);
// 初始化密钥
SecretKey secretKey = new SecretKeySpec(Base64.getDecoder().decode(systemKey), AES_KEY_ALGORITHM);
// 初始化加密器
Cipher cipher = Cipher.getInstance(AES_ALGORITHM);
GCMParameterSpec parameterSpec = new GCMParameterSpec(GCM_TAG_LENGTH * 8, fixedIv);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, parameterSpec);
// 执行加密
byte[] ciphertext = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8));
// 注意这里不包含IV因为IV是固定的
return Base64.getEncoder().encodeToString(ciphertext);
} catch (Exception e) {
log.error("确定性AES加密失败", e);
throw new SecurityException("数据加密失败", e);
}
}
}

View File

@ -0,0 +1,57 @@
package com.kakarote.core.security;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.security.SecureRandom;
import java.util.Base64;
@Slf4j
@Component
public class KeyManager {
// 密钥版本
@Value("${encryption.key-version:V1}")
private String keyVersion;
// 主密钥(生产环境应从KMS获取)
@Value("${encryption.system-key}")
private String systemKey;
/**
* 生成新的AES密钥
* @return Base64编码的密钥
*/
public String generateNewAesKey() {
try {
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(256, new SecureRandom());
SecretKey secretKey = keyGenerator.generateKey();
return Base64.getEncoder().encodeToString(secretKey.getEncoded());
} catch (Exception e) {
log.error("生成AES密钥失败", e);
throw new SecurityException("密钥生成失败", e);
}
}
/**
* 密钥轮换管理
*/
public void rotateKey() {
// 1. 生成新密钥
String newKey = generateNewAesKey();
// 2. 记录密钥版本
String newVersion = "V" + (Integer.parseInt(keyVersion.substring(1)) + 1);
// 3. 将新密钥存储到安全位置
// ... 密钥存储逻辑 ...
// 4. 异步更新数据库中所有旧版本加密数据
// ... 数据迁移逻辑 ...
log.info("密钥轮换完成,新版本: {}", newVersion);
}
}

View File

@ -0,0 +1,99 @@
package com.kakarote.core.security.converter;
import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler;
import com.kakarote.core.common.Const;
import com.kakarote.core.security.EncryptionService;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
@MappedTypes({String.class})
@MappedJdbcTypes({JdbcType.VARCHAR})
@Component
public class SensitiveDataConverter extends AbstractJsonTypeHandler<String> implements ApplicationContextAware {
private static ApplicationContext applicationContext;
private EncryptionService encryptionService;
// 无参构造函数供MyBatis使用
public SensitiveDataConverter() {
}
// 带参构造函数供Spring使用
public SensitiveDataConverter(EncryptionService encryptionService) {
this.encryptionService = encryptionService;
}
public String getNullableResult(ResultSet resultSet, String s) throws SQLException {
String value = resultSet.getString(s);
if (value != null && value.startsWith(Const.ENCRYPTED_PREFIX)) {
// 修复使用deterministicDecryptAes方法解密由deterministicEncryptAes加密的数据
String encryptedValue = value.substring(Const.ENCRYPTED_PREFIX.length());
value = getEncryptionService().deterministicDecryptAes(encryptedValue);
}
return value;
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SensitiveDataConverter.applicationContext = applicationContext;
}
private EncryptionService getEncryptionService() {
if (encryptionService == null) {
encryptionService = applicationContext.getBean(EncryptionService.class);
}
return encryptionService;
}
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {
if (s != null && !s.isEmpty() && !s.startsWith(Const.ENCRYPTED_PREFIX)) {
// 加密后添加前缀标识
s = Const.ENCRYPTED_PREFIX + getEncryptionService().deterministicEncryptAes(s);
}
preparedStatement.setString(i, s);
}
@Override
public String getNullableResult(ResultSet resultSet, int i) throws SQLException {
String value = resultSet.getString(i);
if (value != null && value.startsWith(Const.ENCRYPTED_PREFIX)) {
// 修复使用deterministicDecryptAes方法解密由deterministicEncryptAes加密的数据
String encryptedValue = value.substring(Const.ENCRYPTED_PREFIX.length());
value = getEncryptionService().deterministicDecryptAes(encryptedValue);
}
return value;
}
@Override
public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
String value = callableStatement.getString(i);
if (value != null && value.startsWith(Const.ENCRYPTED_PREFIX)) {
// 修复使用deterministicDecryptAes方法解密由deterministicEncryptAes加密的数据
String encryptedValue = value.substring(Const.ENCRYPTED_PREFIX.length());
value = getEncryptionService().deterministicDecryptAes(encryptedValue);
}
return value;
}
@Override
protected String parse(String json) {
return "";
}
@Override
protected String toJson(String obj) {
return "";
}
}

View File

@ -0,0 +1,213 @@
package com.kakarote.core.security.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.kakarote.core.common.Const;
import com.kakarote.core.common.FieldEnum;
import com.kakarote.core.security.EncryptionService;
import com.kakarote.core.servlet.ApplicationContextHolder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.CollectionUtils;
import java.util.*;
/**
* Elasticsearch数据加密解密工具类
*/
@Slf4j
public class EsDataEncryptUtil {
private static EncryptionService encryptionService;
// 日期类型字段的前缀列表可根据实际情况扩展
private static final Set<String> DATE_FIELD_PREFIXES = new HashSet<>(Arrays.asList(
"createTime", "updateTime", "lastTime", "startTime", "endTime", "birthDate", "nextContactTime"
));
private static EncryptionService getEncryptionService() {
if (encryptionService == null) {
encryptionService = ApplicationContextHolder.getBean(EncryptionService.class);
}
return encryptionService;
}
/**
* 加密Map中的所有String类型字段但跳过日期类型字段
*/
public static Map<String, Object> encryptMap(Map<String, Object> map) {
if (map == null || map.isEmpty()) {
return map;
}
Map<String, Object> encryptedMap = new HashMap<>(map.size());
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
// 检查是否为日期类型字段如果是则不加密
if (isDateField(key) && value instanceof String) {
encryptedMap.put(key, value);
} else {
encryptedMap.put(key, encryptValue(value));
}
}
return encryptedMap;
}
/**
* 解密Map中的所有字段
*/
public static Map<String, Object> decryptMap(Map<String, Object> map) {
if (map == null || map.isEmpty()) {
return map;
}
Map<String, Object> decryptedMap = new HashMap<>(map.size());
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
decryptedMap.put(key, decryptValue(key,value));
}
return decryptedMap;
}
/**
* 加密List中每个Map的所有字段
*/
public static List<Map<String, Object>> encryptMapList(List<Map<String, Object>> list) {
if (CollectionUtils.isEmpty(list)) {
return list;
}
List<Map<String, Object>> encryptedList = new ArrayList<>(list.size());
for (Map<String, Object> map : list) {
encryptedList.add(encryptMap(map));
}
return encryptedList;
}
/**
* 解密List中每个Map的所有字段
*/
public static List<Map<String, Object>> decryptMapList(List<Map<String, Object>> list) {
if (CollectionUtils.isEmpty(list)) {
return list;
}
List<Map<String, Object>> decryptedList = new ArrayList<>(list.size());
for (Map<String, Object> map : list) {
decryptedList.add(decryptMap(map));
}
return decryptedList;
}
/**
* 根据值类型进行加密
*/
@SuppressWarnings("unchecked")
private static Object encryptValue(Object value) {
if (value == null) {
return null;
}
if (value instanceof String) {
String strValue = (String) value;
// 已经加密的不再重复加密
if (!strValue.isEmpty() && !strValue.startsWith(Const.ENCRYPTED_PREFIX)) {
return Const.ENCRYPTED_PREFIX + getEncryptionService().deterministicEncryptAes(strValue);
}
return strValue;
} else if (value instanceof Map) {
// 递归处理嵌套Map
return encryptMap((Map<String, Object>) value);
} else if (value instanceof List) {
// 递归处理List中的每个元素
List<Object> encryptedList = new ArrayList<>();
for (Object item : (List<Object>) value) {
encryptedList.add(encryptValue(item));
}
return encryptedList;
}
// 其他类型保持不变
return value;
}
/**
* 根据值类型进行解密
*/
@SuppressWarnings("unchecked")
private static Object decryptValue(String key, Object value) {
if (value == null) {
return null;
}
if (value instanceof String) {
String strValue = (String) value;
// 对已加密的数据进行解密
if (strValue.startsWith(Const.ENCRYPTED_PREFIX)) {
String encryptedValue = strValue.substring(Const.ENCRYPTED_PREFIX.length());
// 尝试使用确定性解密用于查询和存储中使用了deterministicEncryptAes的情况
try {
String newValue = getEncryptionService().deterministicDecryptAes(encryptedValue);
return desensitization(key, newValue);
} catch (Exception e) {
// 如果确定性解密失败尝试使用普通解密
log.debug("确定性解密失败,尝试普通解密", e);
String newValue = getEncryptionService().decryptAes(encryptedValue);
return desensitization(key, newValue);
}
}
return strValue;
} else if (value instanceof Map) {
// 递归处理嵌套Map
return decryptMap((Map<String, Object>) value);
} else if (value instanceof List) {
// 递归处理List中的每个元素
List<Object> decryptedList = new ArrayList<>();
for (Object item : (List<Object>) value) {
decryptedList.add(decryptValue(key, item));
}
return decryptedList;
}
// 其他类型保持不变
return value;
}
// 数据脱敏
private static String desensitization(String key,String value){
if ("mobile".equals(key)) {
return SensitiveDataMaskUtil.maskPhone(value);
}else if ("email".equals(key)) {
return SensitiveDataMaskUtil.maskEmail(value);
}else if ("ownerDeptName".equals(key)) {
return SensitiveDataMaskUtil.maskName(value);
}else if ("address".equals(key)) {
return SensitiveDataMaskUtil.maskAddress(value);
}else if ("telephone".equals(key)) { //详情页联系人姓名
return SensitiveDataMaskUtil.maskName(value);
}else if ("fliedKjhmgc".equals(key)) {
return SensitiveDataMaskUtil.maskAddress(value);
} else if ("name".equals(key)) { //联系人模块中的联系人姓名
return SensitiveDataMaskUtil.maskName(value);
}
return value;
}
/**
* 判断字段是否为日期类型字段
* @param fieldName 字段名
* @return 是否为日期类型字段
*/
private static boolean isDateField(String fieldName) {
// 检查字段名是否以日期字段前缀开头
for (String prefix : DATE_FIELD_PREFIXES) {
if (fieldName.equals(prefix) || fieldName.endsWith("Time") || fieldName.endsWith("Date")) {
return true;
}
}
if ("fieldDomqff".equals(fieldName)) {
return true;
}
if ("fieldAcqnin".equals(fieldName)) {
return true;
}
return false;
}
}

View File

@ -0,0 +1,150 @@
package com.kakarote.core.security.util;
import org.apache.commons.lang3.StringUtils;
/**
* 敏感数据脱敏工具类
* 提供姓名手机号地址等敏感信息的脱敏处理
*/
public class SensitiveDataMaskUtil {
/**
* 对姓名进行脱敏处理
* 规则
* 1. 单字名显示姓氏其余用*代替
* 2. 双字名显示姓氏名用*代替
* 3. 多字名显示姓氏和最后一个字中间用*代替
* 4. 长度不足的情况直接返回原字符串
*
* @param name 姓名
* @return 脱敏后的姓名
*/
public static String maskName(String name) {
if (StringUtils.isBlank(name)) {
return StringUtils.EMPTY;
}
int length = name.length();
if (length == 1) {
// 单字名直接返回
return name;
} else if (length == 2) {
// 双字名显示姓氏
return name.charAt(0) + "*";
} else if (length == 3) {
// 三字名显示姓氏和最后一个字
return name.charAt(0) + "*" + name.charAt(2);
} else {
// 多字名显示姓氏和最后一个字中间用*代替
return name.charAt(0) + StringUtils.repeat("*", length - 2) + name.charAt(length - 1);
}
}
/**
* 对手机号码进行脱敏处理
* 规则保留前3位和后4位中间用*代替
*
* @param phone 手机号码
* @return 脱敏后的手机号码
*/
public static String maskPhone(String phone) {
if (StringUtils.isBlank(phone) || phone.length() < 11) {
return phone;
}
return phone.substring(0, 3) + "****" + phone.substring(7);
}
/**
* 对地址进行脱敏处理
* 规则
* 1. 保留省后面的详细地址用*代替
* 2. 如果地址较短保留前8个字符后面用*代替
*
* @param address 地址
* @return 脱敏后的地址
*/
public static String maskAddress(String address) {
if (StringUtils.isBlank(address)) {
return StringUtils.EMPTY;
}
int length = address.length();
if (length <= 8) {
// 地址较短保留前半部分
int keepLength = Math.max(1, length / 2);
return address.substring(0, keepLength) + StringUtils.repeat("*", length - keepLength);
} else {
// 地址较长保留前8个字符
return address.substring(0, 8) + "****";
}
}
/**
* 对邮箱进行脱敏处理
* 规则保留前2位和域名中间用*代替
*
* @param email 邮箱地址
* @return 脱敏后的邮箱
*/
public static String maskEmail(String email) {
if (StringUtils.isBlank(email) || !email.contains("@")) {
return email;
}
String[] parts = email.split("@");
if (parts.length != 2) {
return email;
}
String username = parts[0];
String domain = parts[1];
if (username.length() <= 2) {
// 用户名较短全部用*代替
return StringUtils.repeat("*", username.length()) + "@" + domain;
} else {
// 保留前2位其余用*代替
return username.substring(0, 2) + StringUtils.repeat("*", username.length() - 2) + "@" + domain;
}
}
/**
* 对身份证号进行脱敏处理
* 规则保留前6位和后4位中间用*代替
*
* @param idCard 身份证号
* @return 脱敏后的身份证号
*/
public static String maskIdCard(String idCard) {
if (StringUtils.isBlank(idCard) || idCard.length() < 18) {
return idCard;
}
return idCard.substring(0, 6) + StringUtils.repeat("*", 8) + idCard.substring(14);
}
/**
* 通用脱敏方法
*
* @param str 原始字符串
* @param start 保留的开始位置包含
* @param end 保留的结束位置包含
* @return 脱敏后的字符串
*/
public static String maskGeneral(String str, int start, int end) {
if (StringUtils.isBlank(str)) {
return StringUtils.EMPTY;
}
int length = str.length();
if (start < 0 || end < 0 || start >= length || end >= length || start >= end) {
return str;
}
StringBuilder sb = new StringBuilder();
sb.append(str.substring(0, start));
sb.append(StringUtils.repeat("*", end - start + 1));
sb.append(str.substring(end + 1));
return sb.toString();
}
}

View File

@ -50,7 +50,7 @@ jetcache:
maxTotal: 50
host: ${spring.redis.host}
port: ${spring.redis.port}
password: ${spring.redis.password}
password:
expireAfterWriteInMillis: 1800000
crm:
@ -86,4 +86,9 @@ crm:
bucketName:
0:
1:
encryption:
system-key: AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=
key-version: V1
mybatis:
type-handlers-package: com.kakarote.core.security.converter

BIN
crm/lib/haiti-3.0.jar Normal file

Binary file not shown.

Binary file not shown.

BIN
crm/lib/tax-xmlbean-1.0.jar Normal file

Binary file not shown.

View File

@ -46,6 +46,70 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<classifier>jdk15</classifier>
<version>2.4</version>
</dependency>
<dependency>
<groupId>com.haiti</groupId>
<artifactId>haiti</artifactId>
<scope>system</scope>
<version>3.0</version>
<systemPath>${basedir}/lib/haiti-3.0.jar</systemPath>
</dependency>
<dependency>
<groupId>com.foresee.platform</groupId>
<artifactId>platform-api-sdk</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>${basedir}/lib/platform-api-sdk-1.0.jar</systemPath>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>xom</groupId>
<artifactId>xom</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>com.dtflys.forest</groupId>
<artifactId>forest-spring-boot-starter</artifactId>
<version>1.5.31</version>
</dependency>
</dependencies>
<build>
@ -101,6 +165,17 @@
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<argLine>
-Djavax.xml.accessExternalDTD=all
</argLine>
</configuration>
</plugin>
<!--拷贝依赖 copy-dependencies-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>

View File

@ -10,6 +10,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import com.dtflys.forest.springboot.annotation.ForestScan;
/**
* @author zhangzhiwei
@ -22,6 +23,7 @@ import org.springframework.context.annotation.ComponentScan;
@MapperScan(basePackages = "com.kakarote.crm.mapper")
@EnableMethodCache(basePackages = "com.kakarote.crm",order = -9999)
@EnableCreateCacheAnnotation
@ForestScan(basePackages = "com.kakarote.crm.cilent") // 添加这一行
public class CrmApplication {
public static void main(String[] args) {
System.setProperty("javax.xml.accessExternalSchema","all");

View File

@ -0,0 +1,26 @@
package com.kakarote.crm.cilent;
import com.dtflys.forest.annotation.BaseRequest;
import com.dtflys.forest.annotation.Body;
import com.dtflys.forest.annotation.Post;
import com.dtflys.forest.interceptor.Interceptor;
import com.kakarote.crm.entity.DTO.CrmHttpResponseDTO;
import com.kakarote.crm.entity.PO.CrmUsageReport;
import com.kakarote.crm.entity.VO.CrmQueryUsageReportVO;
import org.springframework.stereotype.Component;
@Component
@BaseRequest(baseURL = "https://v3-demo.lqyuns.com/api")
public interface V3SystemCilent {
@Post(
url = "/risk/fxFxzbJcjgZbmx/findUsageReportByNsrsbhOrNsrmc",
contentType = "application/json"
)
CrmHttpResponseDTO<CrmUsageReport> findUsageReportByNsrsbhOrNsrmc(@Body CrmQueryUsageReportVO crmQueryUsageReportVO);
@Post(
url = "/risk/fxFxzbJcjgZbmx/queryReportScreenings",
contentType = "application/json"
)
CrmHttpResponseDTO<String> queryReportScreenings(@Body CrmQueryUsageReportVO crmQueryUsageReportVO);
}

View File

@ -8,11 +8,14 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.kakarote.core.common.Const;
import com.kakarote.core.common.FieldEnum;
import com.kakarote.core.common.JxcEnum;
import com.kakarote.core.common.SystemCodeEnum;
import com.kakarote.core.exception.CrmException;
import com.kakarote.core.feign.crm.entity.BiParams;
import com.kakarote.core.security.EncryptionService;
import com.kakarote.core.security.util.EsDataEncryptUtil;
import com.kakarote.core.servlet.ApplicationContextHolder;
import com.kakarote.core.utils.BiTimeUtil;
import com.kakarote.crm.constant.CrmEnum;
@ -249,7 +252,16 @@ public class ElasticUtil {
BulkRequest bulkRequest = new BulkRequest();
ids.forEach(id -> {
Map<String, Object> map = new HashMap<>();
map.put(fieldName, value);
if (value instanceof String) {
String strValue = (String) value;
if (!strValue.isEmpty() && !strValue.startsWith(Const.ENCRYPTED_PREFIX)) {
map.put(fieldName, Const.ENCRYPTED_PREFIX + ApplicationContextHolder.getBean(EncryptionService.class).deterministicEncryptAes(strValue));
} else {
map.put(fieldName, value);
}
} else {
map.put(fieldName, value);
}
UpdateRequest request = new UpdateRequest(index, "_doc", id.toString());
request.doc(map);
bulkRequest.add(request);
@ -269,8 +281,10 @@ public class ElasticUtil {
*/
public static void updateField(ElasticsearchRestTemplate template, Map<String, Object> map, Integer id, String index) {
try {
// 加密字段值
Map<String, Object> encryptedMap = EsDataEncryptUtil.encryptMap(map);
UpdateRequest request = new UpdateRequest(index, "_doc", id.toString());
request.doc(map);
request.doc(encryptedMap);
template.getClient().update(request, RequestOptions.DEFAULT);
template.refresh(index);
} catch (IOException e) {
@ -289,10 +303,23 @@ public class ElasticUtil {
if (search.getValues().size() == 0 && !Arrays.asList(5, 6).contains(search.getSearchEnum().getType())) {
return;
}
// 对需要加密的字段值进行加密处理
List<String> encryptedValues = new ArrayList<>();
for (String value : search.getValues()) {
if (!value.isEmpty() && !value.startsWith(Const.ENCRYPTED_PREFIX)) {
// 添加加密前缀并进行AES加密
encryptedValues.add(Const.ENCRYPTED_PREFIX + ApplicationContextHolder.getBean(EncryptionService.class).deterministicEncryptAes(value));
} else {
encryptedValues.add(value);
}
}
search.setValues(encryptedValues);
switch (search.getSearchEnum()) {
case IS:
queryBuilder.filter(QueryBuilders.termsQuery(search.getName(), search.getValues()));
break;
// 其他搜索条件处理保持不变
case IS_NOT:
queryBuilder.mustNot(QueryBuilders.termsQuery(search.getName(), search.getValues()));
break;

View File

@ -12,6 +12,7 @@ import com.kakarote.core.common.SystemCodeEnum;
import com.kakarote.core.exception.CrmException;
import com.kakarote.core.feign.admin.entity.SimpleUser;
import com.kakarote.core.field.FieldService;
import com.kakarote.core.security.util.EsDataEncryptUtil;
import com.kakarote.core.servlet.ApplicationContextHolder;
import com.kakarote.core.utils.UserCacheUtil;
import com.kakarote.crm.constant.CrmEnum;
@ -458,10 +459,12 @@ public class InitEsIndexRunner implements ApplicationRunner {
}
}
});
// 在创建IndexRequest之前加密数据
Map<String, Object> encryptedMap = EsDataEncryptUtil.encryptMap(map);
IndexRequest request = new IndexRequest(crmEnum.getIndex(), "_doc");
request.id(map.get(crmEnum.getPrimaryKey()).toString());
request.source(map);
request.id(encryptedMap.get(crmEnum.getPrimaryKey()).toString());
request.source(encryptedMap);
bulkRequest.add(request);
if (bulkRequest.requests().size() >= 1000) {
bulk(bulkRequest);
@ -510,7 +513,10 @@ public class InitEsIndexRunner implements ApplicationRunner {
}
}
}
request.doc(map);
// 在创建UpdateRequest之前加密数据
Map<String, Object> encryptedMap = EsDataEncryptUtil.encryptMap(map);
request.doc(encryptedMap);
bulkRequest.add(request);
if (bulkRequest.requests().size() >= 1000) {
bulk(bulkRequest);

View File

@ -99,6 +99,7 @@ public enum CrmCodeEnum implements ResultCode {
THE_FIELD_DETAIL_TABLE_FORMAT_ERROR(2089,"清设置表格内的具体字段!"),
CRM_RECEIVABLES_PLAN_ADD_ERROR(2090,"只有审核通过或审核中的合同才可以添加回款计划!"),
CRM_CUSTOMER_POOL_NOT_IS_ADMIN(2091, "没有该公海权限,不能进行操作"),
CUSTOMER_XX_Y(2092, "客户信息已存在,无法重复添加"),
;

View File

@ -17,4 +17,10 @@ public class CrmConst extends Const {
*/
public static final String FIELD_SORT_CACHE_NAME = "CRM:FIELD:SORT:";
public static final String V3_QYFXXX = "/api/risk/fxFxzbJcjgZbmx/openApi/getFxBynsrsbh";
//通过纳税人名称获取纳税人识别号
public static final String V3_GET_NSRSBH = "";
}

View File

@ -0,0 +1,24 @@
package com.kakarote.crm.constant;
public enum CrmPoolEnum {
FXQYMDPOOL("风险企业名单公海",34555),
ZDFDDWMDPOOL("重点辅导单位名单公海",34554),
PXQDMDPOOL("培训签到企业名单公海",34553),
XDMRPOOL("系统默认公海",34552),
GSMGWZKH("公司门户网站客户",34556),
GSXKYDJXX("工商新开业登记信息",34557),
;
private final String name;
private final int id;
private CrmPoolEnum(String name, int id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public Integer getId() {
return id;
}
}

View File

@ -0,0 +1,27 @@
package com.kakarote.crm.constant;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 税务接口服务ID
*/
@Getter
@AllArgsConstructor
public enum CrmTaxServiceIdEnum {
TAX_AUTHORITY_QUERY("JXSW.DZSWJ.CSXT.CXSWJG","税务机关查询服务"),
ENTERPRISE_CREDIT_RATING("JXSW.DZSWJ.CSXT.QYXYDJCX", "企业信用等级查询"),
ENTERPRISE_RISK_DETAIL("JXSW.DZSWJ.CSXT.QYTSFXMXCX", "查询企业推送风险明细"),
TAXPAYER_QUALIFICATION_CODE("JXSW.DZSWJ.CSXT.NSRZGRDXXCX", "查询纳税人资格代码列表"),
ENTERPRISE_INSURED_COUNT("JXSW.DZSWJ.CSXT.QYCBRSCX", "查询企业参保人数"),
ENTERPRISE_INCOME_TAX_ANNUAL("JXSW.DZSWJ.CSXT.QYSDSNDSBXXCX", "查询企业所得税年度申报信息"),
THREE_YEAR_INVOICE_SUMMARY("JXSW.DZSWJ.CSXT.CXFPHZXX", "查询近三年发票汇总"),
INDUSTRIAL_COMMERCIAL_REGISTRATION("JXSW.DZSWJ.CSXT.GSDJKYXXCX","查询工商登记信息"),
;
private final String id;
private final String description;
}

View File

@ -0,0 +1,15 @@
package com.kakarote.crm.constant;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum EnterpriseSizeEnum {
WXQY(50,"微型企业"),
ZXQY(500,"中小企业"),
JTQY(1000,"集团企业");
private int key;
private String value;
}

View File

@ -5,7 +5,6 @@ import cn.hutool.core.util.StrUtil;
import com.kakarote.core.common.*;
import com.kakarote.core.common.log.BehaviorEnum;
import com.kakarote.core.common.log.SysLog;
import com.kakarote.core.common.log.SysLogHandler;
import com.kakarote.core.entity.BasePage;
import com.kakarote.core.exception.CrmException;
import com.kakarote.core.feign.crm.entity.SimpleCrmEntity;
@ -20,6 +19,7 @@ import com.kakarote.crm.constant.CrmCodeEnum;
import com.kakarote.crm.constant.CrmEnum;
import com.kakarote.crm.entity.BO.*;
import com.kakarote.crm.entity.PO.CrmContacts;
import com.kakarote.crm.entity.VO.CrmGetPlaintextVO;
import com.kakarote.crm.entity.VO.CrmInfoNumVO;
import com.kakarote.crm.entity.VO.CrmMembersSelectVO;
import com.kakarote.crm.entity.VO.CrmModelFiledVO;
@ -30,6 +30,7 @@ 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.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@ -39,6 +40,8 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.kakarote.core.common.SystemCodeEnum.SYSTEM_NO_VALID;
/**
* <p>
* 联系人表 前端控制器
@ -59,6 +62,9 @@ public class CrmContactsController {
@Autowired
private ICrmTeamMembersService teamMembersService;
@Value("${app.verify_password}")
private String VERIFY_PASSWORD;
@PostMapping("/queryById/{contactsId}")
@ApiOperation("根据ID查询")
public Result<CrmModel> queryById(@PathVariable("contactsId") @ApiParam(name = "id", value = "id") Integer contactsId) {
@ -72,7 +78,6 @@ public class CrmContactsController {
@PostMapping("/deleteByIds")
@ApiOperation("根据ID删除数据")
@SysLogHandler(behavior = BehaviorEnum.DELETE)
public Result deleteByIds(@ApiParam(name = "ids", value = "id列表") @RequestBody List<Integer> ids) {
crmContactsService.deleteByIds(ids);
return R.ok();
@ -132,7 +137,6 @@ public class CrmContactsController {
@PostMapping("/changeOwnerUser")
@ApiOperation("修改负责人")
@SysLogHandler(behavior = BehaviorEnum.CHANGE_OWNER)
public Result changeOwnerUser(@RequestBody CrmChangeOwnerUserBO crmChangeOwnerUserBO){
crmContactsService.changeOwnerUser(crmChangeOwnerUserBO);
return R.ok();
@ -140,7 +144,6 @@ public class CrmContactsController {
@PostMapping("/batchExportExcel")
@ApiOperation("选中导出")
@SysLogHandler(behavior = BehaviorEnum.EXCEL_EXPORT,object = "选中导出",detail = "导出联系人")
public void batchExportExcel(@RequestBody @ApiParam(name = "ids", value = "id列表") List<Integer> ids, HttpServletResponse response) {
CrmSearchBO search = new CrmSearchBO();
search.setPageType(0);
@ -156,7 +159,6 @@ public class CrmContactsController {
@PostMapping("/allExportExcel")
@ApiOperation("全部导出")
@SysLogHandler(behavior = BehaviorEnum.EXCEL_EXPORT,object = "全部导出",detail = "导出联系人")
public void allExportExcel(@RequestBody CrmSearchBO search, HttpServletResponse response) {
search.setPageType(0);
crmContactsService.exportExcel(response, search);
@ -164,7 +166,6 @@ public class CrmContactsController {
@PostMapping("/add")
@ApiOperation("保存数据")
@SysLogHandler(behavior = BehaviorEnum.SAVE, object = "#crmModel.entity[name]", detail = "'新增了联系人:' + #crmModel.entity[name]")
public Result add(@RequestBody CrmContactsSaveBO crmModel) {
crmContactsService.addOrUpdate(crmModel,false);
return R.ok();
@ -179,7 +180,6 @@ public class CrmContactsController {
@PostMapping("/update")
@ApiOperation("修改数据")
@SysLogHandler(behavior = BehaviorEnum.UPDATE)
public Result update(@RequestBody CrmContactsSaveBO crmModel) {
crmContactsService.addOrUpdate(crmModel,false);
return R.ok();
@ -220,7 +220,6 @@ public class CrmContactsController {
@PostMapping("/uploadExcel")
@ApiOperation("导入联系人")
@SysLogHandler(behavior = BehaviorEnum.EXCEL_IMPORT,object = "导入联系人",detail = "导入联系人")
public Result<Long> uploadExcel(@RequestParam("file") MultipartFile file, @RequestParam("repeatHandling") Integer repeatHandling) {
UploadExcelBO uploadExcelBO = new UploadExcelBO();
uploadExcelBO.setUserInfo(UserUtil.getUser());
@ -233,7 +232,6 @@ public class CrmContactsController {
@PostMapping("/updateInformation")
@ApiOperation("基本信息保存修改")
@SysLogHandler(behavior = BehaviorEnum.UPDATE)
public Result updateInformation(@RequestBody CrmUpdateInformationBO updateInformationBO) {
crmContactsService.updateInformation(updateInformationBO);
return R.ok();
@ -253,7 +251,6 @@ public class CrmContactsController {
@PostMapping("/addMembers")
@ApiOperation("新增团队成员")
@SysLogHandler(behavior = BehaviorEnum.ADD_MEMBER)
public Result addMembers(@RequestBody CrmMemberSaveBO crmMemberSaveBO) {
teamMembersService.addMember(CrmEnum.CONTACTS,crmMemberSaveBO);
return R.ok();
@ -261,7 +258,6 @@ public class CrmContactsController {
@PostMapping("/updateMembers")
@ApiOperation("新增团队成员")
@SysLogHandler(behavior = BehaviorEnum.ADD_MEMBER)
public Result updateMembers(@RequestBody CrmMemberSaveBO crmMemberSaveBO) {
teamMembersService.addMember(CrmEnum.CONTACTS,crmMemberSaveBO);
return R.ok();
@ -269,7 +265,6 @@ public class CrmContactsController {
@PostMapping("/deleteMembers")
@ApiOperation("删除团队成员")
@SysLogHandler
public Result deleteMembers(@RequestBody CrmMemberSaveBO crmMemberSaveBO) {
teamMembersService.deleteMember(CrmEnum.CONTACTS,crmMemberSaveBO);
return R.ok();
@ -277,10 +272,20 @@ public class CrmContactsController {
@PostMapping("/exitTeam/{contactsId}")
@ApiOperation("退出团队")
@SysLogHandler
public Result exitTeam(@PathVariable("contactsId") @ApiParam("联系人ID") Integer contactsId) {
teamMembersService.exitTeam(CrmEnum.CONTACTS,contactsId);
return R.ok();
}
@PostMapping("/getPlaintext")
public Result getPlaintext(@RequestBody CrmGetPlaintextVO plaintextVO) {
System.out.println(plaintextVO);
// 验证密码
if (!plaintextVO.getPassword().equals(VERIFY_PASSWORD) || plaintextVO.getPassword().equals("")) {
return Result.error(SYSTEM_NO_VALID,"密码错误或者密码不能为空!");
}
String plaintext = crmContactsService.getPlaintext(plaintextVO);
return Result.ok(plaintext);
}
}

View File

@ -6,7 +6,6 @@ import com.alibaba.fastjson.JSONObject;
import com.kakarote.core.common.*;
import com.kakarote.core.common.log.BehaviorEnum;
import com.kakarote.core.common.log.SysLog;
import com.kakarote.core.common.log.SysLogHandler;
import com.kakarote.core.entity.BasePage;
import com.kakarote.core.exception.CrmException;
import com.kakarote.core.feign.admin.entity.AdminConfig;
@ -92,7 +91,6 @@ public class CrmContractController {
@PostMapping("/deleteByIds")
@ApiOperation("根据ID删除数据")
@SysLogHandler(behavior = BehaviorEnum.DELETE)
public Result deleteByIds(@ApiParam(name = "ids", value = "id列表") @RequestBody List<Integer> ids) {
crmContractService.deleteByIds(ids);
return R.ok();
@ -119,7 +117,6 @@ public class CrmContractController {
@PostMapping("/changeOwnerUser")
@ApiOperation("修改合同负责人")
@SysLogHandler(behavior = BehaviorEnum.CHANGE_OWNER)
public Result changeOwnerUser(@RequestBody CrmChangeOwnerUserBO crmChangeOwnerUserBO) {
crmContractService.changeOwnerUser(crmChangeOwnerUserBO);
return R.ok();
@ -127,7 +124,6 @@ public class CrmContractController {
@PostMapping("/add")
@ApiOperation("保存数据")
@SysLogHandler(behavior = BehaviorEnum.SAVE, object = "#crmModel.entity[name]", detail = "'新增了合同:' + #crmModel.entity[name]")
public Result add(@RequestBody CrmContractSaveBO crmModel) {
crmContractService.addOrUpdate(crmModel);
return R.ok();
@ -135,7 +131,6 @@ public class CrmContractController {
@PostMapping("/update")
@ApiOperation("修改数据")
@SysLogHandler(behavior = BehaviorEnum.UPDATE)
public Result update(@RequestBody CrmContractSaveBO crmModel) {
crmContractService.addOrUpdate(crmModel);
return R.ok();
@ -156,7 +151,6 @@ public class CrmContractController {
@PostMapping("/addMembers")
@ApiOperation("新增团队成员")
@SysLogHandler(behavior = BehaviorEnum.ADD_MEMBER)
public Result addMembers(@RequestBody CrmMemberSaveBO crmMemberSaveBO) {
teamMembersService.addMember(CrmEnum.CONTRACT,crmMemberSaveBO);
return R.ok();
@ -164,7 +158,6 @@ public class CrmContractController {
@PostMapping("/updateMembers")
@ApiOperation("新增团队成员")
@SysLogHandler(behavior = BehaviorEnum.ADD_MEMBER)
public Result updateMembers(@RequestBody CrmMemberSaveBO crmMemberSaveBO) {
teamMembersService.addMember(CrmEnum.CONTRACT,crmMemberSaveBO);
return R.ok();
@ -172,7 +165,6 @@ public class CrmContractController {
@PostMapping("/deleteMembers")
@ApiOperation("删除团队成员")
@SysLogHandler
public Result deleteMembers(@RequestBody CrmMemberSaveBO crmMemberSaveBO) {
teamMembersService.deleteMember(CrmEnum.CONTRACT,crmMemberSaveBO);
return R.ok();
@ -180,7 +172,6 @@ public class CrmContractController {
@PostMapping("/exitTeam/{contractId}")
@ApiOperation("退出团队")
@SysLogHandler
public Result exitTeam(@PathVariable("contractId") @ApiParam("合同ID") Integer contractId) {
teamMembersService.exitTeam(CrmEnum.CONTRACT,contractId);
return R.ok();
@ -273,7 +264,6 @@ public class CrmContractController {
@ApiOperation(value = "设置合同到期提醒设置")
@PostMapping("/setContractConfig")
@SysLogHandler(applicationName = "admin", subModel = SubModelType.ADMIN_CUSTOMER_MANAGEMENT, behavior = BehaviorEnum.UPDATE, object = "设置合同到期提醒设置", detail = "设置合同到期提醒设置")
public Result setContractConfig(@RequestParam("status") Integer status, @RequestParam(value = "contractDay", required = false, defaultValue = "0") Integer contractDay) {
if (status == 1 && contractDay == null) {
return R.error(CrmCodeEnum.CRM_CONTRACT_CONFIG_ERROR);
@ -293,7 +283,6 @@ public class CrmContractController {
@PostMapping("/contractDiscard")
@ApiOperation("合同作废")
@SysLogHandler
public Result contractDiscard(@RequestParam("contractId") Integer contractId) {
boolean auth = AuthUtil.isRwAuth(contractId, CrmEnum.CONTRACT,CrmAuthEnum.EDIT);
if (auth) {
@ -320,7 +309,6 @@ public class CrmContractController {
@PostMapping("/batchExportExcel")
@ApiOperation("选中导出")
@SysLogHandler(behavior = BehaviorEnum.EXCEL_EXPORT, object = "合同导出", detail = "选中导出")
public void batchExportExcel(@RequestBody @ApiParam(name = "ids", value = "id列表") List<Integer> ids, HttpServletResponse response) {
CrmSearchBO search = new CrmSearchBO();
search.setPageType(0);
@ -336,7 +324,6 @@ public class CrmContractController {
@PostMapping("/allExportExcel")
@ApiOperation("全部导出")
@SysLogHandler(behavior = BehaviorEnum.EXCEL_EXPORT, object = "合同导出", detail = "全部导出")
public void allExportExcel(@RequestBody CrmSearchBO search, HttpServletResponse response) {
search.setPageType(0);
crmContractService.exportExcel(response, search);
@ -358,7 +345,6 @@ public class CrmContractController {
@PostMapping("/updateInformation")
@ApiOperation("基本信息保存修改")
@SysLogHandler(behavior = BehaviorEnum.UPDATE)
public Result updateInformation(@RequestBody CrmUpdateInformationBO updateInformationBO) {
crmContractService.updateInformation(updateInformationBO);
return R.ok();

View File

@ -0,0 +1,44 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.ParamAspect;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.PO.CrmCorporatePortrait;
import com.kakarote.crm.entity.VO.CrmQueryUsageReportVO;
import com.kakarote.crm.service.ICrmCorporatePortraitService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/crmCorporatePortrait")
public class CrmCorporatePortraitController {
@Autowired
private ICrmCorporatePortraitService crmCorporatePortraitService;
@PostMapping("/queryByNsrmc")
@ApiOperation("根据Nsrmc查询")
public Result<CrmCorporatePortrait> queryByNsrmc(@RequestBody CrmQueryUsageReportVO crmQueryUsageReportVO) {
return R.ok(crmCorporatePortraitService.queryByNsrmc(crmQueryUsageReportVO.getNsrmc()));
}
@PostMapping("/insertCorporatePortrait")
@ApiOperation("新增")
public Result<Integer> insertCorporatePortrait(@RequestBody CrmCorporatePortrait crmCorporatePortrait){
return R.ok(crmCorporatePortraitService.insertCorporatePortrait(crmCorporatePortrait));
}
@PostMapping("/updateCorporatePortrait")
@ApiOperation("更新")
public Result<Integer> updateCorporatePortrait(@RequestBody CrmCorporatePortrait crmCorporatePortrait){
return R.ok(crmCorporatePortraitService.updateCorporatePortrait(crmCorporatePortrait));
}
@GetMapping("deleteCorporatePortrait/{nsrmc}")
public Result<Integer> deleteCorporatePortrait(@PathVariable("nsrmc") String nsrmc){
return R.ok(crmCorporatePortraitService.deleteCorporatePortrait(nsrmc));
}
}

View File

@ -25,17 +25,13 @@ import com.kakarote.crm.entity.BO.*;
import com.kakarote.crm.entity.PO.CrmContacts;
import com.kakarote.crm.entity.PO.CrmCustomer;
import com.kakarote.crm.entity.PO.CrmCustomerSetting;
import com.kakarote.crm.entity.VO.CrmDataCheckVO;
import com.kakarote.crm.entity.VO.CrmInfoNumVO;
import com.kakarote.crm.entity.VO.CrmMembersSelectVO;
import com.kakarote.crm.entity.VO.CrmModelFiledVO;
import com.kakarote.crm.service.CrmUploadExcelService;
import com.kakarote.crm.service.ICrmCustomerService;
import com.kakarote.crm.service.ICrmTeamMembersService;
import com.kakarote.crm.entity.VO.*;
import com.kakarote.crm.service.*;
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.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@ -45,6 +41,8 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.kakarote.core.common.SystemCodeEnum.SYSTEM_NO_VALID;
/**
* <p>
* 客户表 前端控制器
@ -71,6 +69,15 @@ public class CrmCustomerController {
@Autowired
private ICrmTeamMembersService teamMembersService;
@Autowired
private ICrmOpenApiService crmOpenApiService;
@Autowired
private IBatchEncryptionService batchEncryptionService;
@Value("${app.verify_password}")
private String VERIFY_PASSWORD;
@PostMapping("/queryPageList")
@ApiOperation("查询列表页数据")
public Result<BasePage<Map<String, Object>>> queryPageList(@RequestBody CrmSearchBO search) {
@ -81,15 +88,14 @@ public class CrmCustomerController {
@PostMapping("/add")
@ApiOperation("保存数据")
@SysLogHandler(behavior = BehaviorEnum.SAVE, object = "#crmModel.entity[customerName]", detail = "'新增了客户:' + #crmModel.entity[customerName]")
public Result<Map<String, Object>> add(@RequestBody CrmBusinessSaveBO crmModel) {
Map<String, Object> map = crmCustomerService.addOrUpdate(crmModel, false, null);
// crmOpenApiService.crmAddCustomer(crmModel,"签到");
return R.ok(map);
}
@PostMapping("/update")
@ApiOperation("修改数据")
@SysLogHandler(behavior = BehaviorEnum.UPDATE)
public Result<Map<String, Object>> update(@RequestBody CrmBusinessSaveBO crmModel) {
Map<String, Object> map = crmCustomerService.addOrUpdate(crmModel, false, null);
return R.ok(map);
@ -144,7 +150,6 @@ public class CrmCustomerController {
@PostMapping("/deleteByIds")
@ApiOperation("根据ID删除数据")
@SysLogHandler(behavior = BehaviorEnum.DELETE)
public Result deleteByIds(@ApiParam(name = "ids", value = "id列表") @RequestBody List<Integer> ids) {
crmCustomerService.deleteByIds(ids);
return R.ok();
@ -247,7 +252,6 @@ public class CrmCustomerController {
@PostMapping("/lock")
@ApiOperation("锁定或解锁客户")
@SysLogHandler
public Result lock(@RequestParam("status") Integer status, @RequestParam("ids") String id) {
crmCustomerService.lock(status, StrUtil.splitTrim(id, Const.SEPARATOR));
return R.ok();
@ -255,7 +259,6 @@ public class CrmCustomerController {
@PostMapping("/setDealStatus")
@ApiOperation("修改客户成交状态")
@SysLogHandler(behavior = BehaviorEnum.CHANGE_DEAL_STATUS)
public Result setDealStatus(@RequestParam("dealStatus") Integer dealStatus, @RequestParam("ids") String id) {
crmCustomerService.setDealStatus(dealStatus, StrUtil.splitTrim(id, Const.SEPARATOR).stream().map(Integer::valueOf).collect(Collectors.toList()));
return R.ok();
@ -263,7 +266,6 @@ public class CrmCustomerController {
@PostMapping("/changeOwnerUser")
@ApiOperation("修改客户负责人")
@SysLogHandler(behavior = BehaviorEnum.CHANGE_OWNER)
public Result changeOwnerUser(@RequestBody CrmChangeOwnerUserBO crmChangeOwnerUserBO) {
crmCustomerService.changeOwnerUser(crmChangeOwnerUserBO);
return R.ok();
@ -283,7 +285,6 @@ public class CrmCustomerController {
@PostMapping("/addMembers")
@ApiOperation("新增团队成员")
@SysLogHandler(behavior = BehaviorEnum.ADD_MEMBER)
public Result addMembers(@RequestBody CrmMemberSaveBO crmMemberSaveBO) {
teamMembersService.addMember(CrmEnum.CUSTOMER,crmMemberSaveBO);
return R.ok();
@ -291,7 +292,6 @@ public class CrmCustomerController {
@PostMapping("/updateMembers")
@ApiOperation("新增团队成员")
@SysLogHandler(behavior = BehaviorEnum.ADD_MEMBER)
public Result updateMembers(@RequestBody CrmMemberSaveBO crmMemberSaveBO) {
teamMembersService.addMember(CrmEnum.CUSTOMER,crmMemberSaveBO);
return R.ok();
@ -299,7 +299,6 @@ public class CrmCustomerController {
@PostMapping("/deleteMembers")
@ApiOperation("删除团队成员")
@SysLogHandler
public Result deleteMembers(@RequestBody CrmMemberSaveBO crmMemberSaveBO) {
teamMembersService.deleteMember(CrmEnum.CUSTOMER,crmMemberSaveBO);
return R.ok();
@ -307,7 +306,6 @@ public class CrmCustomerController {
@PostMapping("/exitTeam/{customerId}")
@ApiOperation("删除团队成员")
@SysLogHandler
public Result exitTeam(@PathVariable("customerId") @ApiParam("客户ID") Integer customerId) {
teamMembersService.exitTeam(CrmEnum.CUSTOMER,customerId);
return R.ok();
@ -368,7 +366,6 @@ public class CrmCustomerController {
@PostMapping("/batchExportExcel")
@ApiOperation("选中导出")
@SysLogHandler(behavior = BehaviorEnum.EXCEL_EXPORT,object = "选中导出",detail = "导出客户")
public void batchExportExcel(@RequestBody @ApiParam(name = "ids", value = "id列表") List<Integer> ids, HttpServletResponse response) {
CrmSearchBO search = new CrmSearchBO();
search.setPageType(0);
@ -384,7 +381,6 @@ public class CrmCustomerController {
@PostMapping("/allExportExcel")
@ApiOperation("全部导出")
@SysLogHandler(behavior = BehaviorEnum.EXCEL_EXPORT,object = "全部导出",detail = "导出客户")
public void allExportExcel(@RequestBody CrmSearchBO search, HttpServletResponse response) {
search.setPageType(0);
crmCustomerService.exportExcel(response, search);
@ -392,7 +388,6 @@ public class CrmCustomerController {
@PostMapping("/updateCustomerByIds")
@ApiOperation("客户放入公海")
@SysLogHandler(behavior = BehaviorEnum.PUT_IN_POOL)
public Result updateCustomerByIds(@RequestBody CrmCustomerPoolBO poolBO) {
crmCustomerService.updateCustomerByIds(poolBO);
return R.ok();
@ -400,7 +395,6 @@ public class CrmCustomerController {
@PostMapping("/distributeByIds")
@ApiOperation("公海分配客户")
@SysLogHandler(behavior = BehaviorEnum.DISTRIBUTE)
public Result distributeByIds(@RequestBody CrmCustomerPoolBO poolBO) {
crmCustomerService.getCustomersByIds(poolBO, 1);
return R.ok();
@ -408,7 +402,6 @@ public class CrmCustomerController {
@PostMapping("/receiveByIds")
@ApiOperation("公海领取客户")
@SysLogHandler(behavior = BehaviorEnum.RECEIVE)
public Result receiveByIds(@RequestBody CrmCustomerPoolBO poolBO) {
crmCustomerService.getCustomersByIds(poolBO, 2);
return R.ok();
@ -422,7 +415,6 @@ public class CrmCustomerController {
@PostMapping("/uploadExcel")
@ApiOperation("导入客户")
@SysLogHandler(behavior = BehaviorEnum.EXCEL_IMPORT,object = "导入客户",detail = "导入客户")
public Result<Long> uploadExcel(@RequestParam("file") MultipartFile file, @RequestParam("repeatHandling") Integer repeatHandling) {
UploadExcelBO uploadExcelBO = new UploadExcelBO();
uploadExcelBO.setUserInfo(UserUtil.getUser());
@ -435,7 +427,6 @@ public class CrmCustomerController {
@PostMapping("/customerSetting")
@ApiOperation("客户规则设置")
@SysLogHandler(applicationName = "admin",subModel = SubModelType.ADMIN_CUSTOMER_MANAGEMENT,behavior = BehaviorEnum.UPDATE,object = "修改拥有/锁定客户规则设置",detail = "修改拥有/锁定客户规则设置")
public Result customerSetting(@RequestBody CrmCustomerSetting customerSetting) {
crmCustomerService.customerSetting(customerSetting);
return R.ok();
@ -535,7 +526,6 @@ public class CrmCustomerController {
@PostMapping("/updateInformation")
@ApiOperation("基本信息保存修改")
@SysLogHandler(behavior = BehaviorEnum.UPDATE)
public Result updateInformation(@RequestBody CrmUpdateInformationBO updateInformationBO) {
crmCustomerService.updateInformation(updateInformationBO);
return R.ok();
@ -548,5 +538,33 @@ public class CrmCustomerController {
String customerName = crmCustomerService.getCustomerName(customerId);
return R.ok(customerName);
}
@PostMapping("/queryEncryptCustomerData")
@ApiOperation("批量加密客户数据")
@ParamAspect
public Result encryptCustomerData(@RequestParam(defaultValue = "1000") int pageSize) {
batchEncryptionService.batchEncryptCustomerData(pageSize);
return Result.ok();
}
@PostMapping("/getPlaintext")
public Result getPlaintext(@RequestBody CrmGetPlaintextVO plaintextVO) {
// 验证密码
if (!plaintextVO.getPassword().equals(VERIFY_PASSWORD) || plaintextVO.getPassword().equals("")) {
return Result.error(SYSTEM_NO_VALID,"密码错误或者密码不能为空!");
}
String plaintext = crmCustomerService.getPlaintext(plaintextVO);
return Result.ok(plaintext);
}
//企业画像验证
@PostMapping("/verifyPassword")
public Result verifyPassword(@RequestBody CrmGetPlaintextVO plaintextVO) {
// 验证密码
if (!plaintextVO.getPassword().equals(VERIFY_PASSWORD) || plaintextVO.getPassword().equals("")) {
return Result.error(SYSTEM_NO_VALID,"密码错误或者密码不能为空!");
}
return Result.ok();
}
}

View File

@ -6,7 +6,6 @@ import com.alibaba.fastjson.JSONObject;
import com.kakarote.core.common.*;
import com.kakarote.core.common.log.BehaviorEnum;
import com.kakarote.core.common.log.SysLog;
import com.kakarote.core.common.log.SysLogHandler;
import com.kakarote.core.entity.BasePage;
import com.kakarote.core.entity.PageEntity;
import com.kakarote.core.exception.CrmException;
@ -18,6 +17,7 @@ import com.kakarote.crm.constant.CrmEnum;
import com.kakarote.crm.entity.BO.CrmCustomerPoolBO;
import com.kakarote.crm.entity.BO.CrmSearchBO;
import com.kakarote.crm.entity.BO.UploadExcelBO;
import com.kakarote.crm.entity.DTO.CrmQueryGsdjxxDTO;
import com.kakarote.crm.entity.PO.CrmCustomerPool;
import com.kakarote.crm.entity.PO.CrmCustomerPoolFieldSort;
import com.kakarote.crm.entity.VO.CrmCustomerPoolVO;
@ -25,6 +25,7 @@ import com.kakarote.crm.entity.VO.CrmModelFiledVO;
import com.kakarote.crm.service.CrmUploadExcelService;
import com.kakarote.crm.service.ICrmCustomerPoolService;
import com.kakarote.crm.service.ICrmCustomerService;
import com.kakarote.crm.service.ICrmGsdjxxService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@ -34,6 +35,8 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@ -50,7 +53,6 @@ import java.util.Objects;
@RequestMapping("/crmCustomerPool")
@Api(tags = "公海控制器")
@Slf4j
@SysLog(logClass = CrmCustomerPoolLog.class)
public class CrmCustomerPoolController {
@Autowired
@ -62,9 +64,23 @@ public class CrmCustomerPoolController {
@Autowired
private CrmUploadExcelService uploadExcelService;
@Autowired
private ICrmGsdjxxService crmGsdjxxService;
@ApiOperation("查看公海列表页")
@PostMapping("/queryPageList")
public Result<BasePage<Map<String, Object>>> queryPageList(@RequestBody CrmSearchBO crmSearchBO) {
// if (crmSearchBO.getPoolId() == 34557) {
// // 获取当前日期
// LocalDate currentDate = LocalDate.now();
// // 定义日期格式
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// // 格式化日期
// String rq = currentDate.format(formatter);
// CrmQueryGsdjxxDTO dto = new CrmQueryGsdjxxDTO().setRq(rq);
// BasePage<Map<String, Object>> mapBasePage = crmGsdjxxService.queryGsdjxxByDate(dto);
// return Result.ok(mapBasePage);
// }
BasePage<Map<String, Object>> basePage = crmCustomerPoolService.queryPageList(crmSearchBO,false);
return Result.ok(basePage);
}
@ -85,7 +101,6 @@ public class CrmCustomerPoolController {
@ApiOperation("修改公海状态")
@PostMapping("/changeStatus")
@SysLogHandler(applicationName = "admin",subModel = SubModelType.ADMIN_CUSTOMER_MANAGEMENT,behavior = BehaviorEnum.UPDATE)
public Result changeStatus(@RequestParam("poolId") Integer poolId, @RequestParam("status") Integer status) {
crmCustomerPoolService.changeStatus(poolId, status);
return Result.ok();
@ -187,7 +202,6 @@ public class CrmCustomerPoolController {
@ApiOperation("设置公海规则")
@PostMapping("/setCustomerPool")
@SysLogHandler(applicationName = "admin",subModel = SubModelType.ADMIN_CUSTOMER_MANAGEMENT,behavior = BehaviorEnum.SAVE,object = "#jsonObject[poolName]",detail = "'添加或修改了公海规则:'+#jsonObject[poolName]")
public Result setCustomerPool(@RequestBody JSONObject jsonObject) {
crmCustomerPoolService.setCustomerPool(jsonObject);
return Result.ok();
@ -209,7 +223,6 @@ public class CrmCustomerPoolController {
@ApiOperation("删除公海规则")
@PostMapping("/deleteCustomerPool")
@SysLogHandler(applicationName = "admin",subModel = SubModelType.ADMIN_CUSTOMER_MANAGEMENT,behavior = BehaviorEnum.DELETE)
public Result deleteCustomerPool(@RequestParam("poolId") Integer poolId) {
crmCustomerPoolService.deleteCustomerPool(poolId);
return Result.ok();
@ -238,7 +251,6 @@ public class CrmCustomerPoolController {
@PostMapping("/transfer")
@ApiOperation("公海客户的转移")
@SysLogHandler(applicationName = "admin",subModel = SubModelType.ADMIN_CUSTOMER_MANAGEMENT,behavior = BehaviorEnum.UPDATE)
public Result transfer(@RequestParam("prePoolId") Integer prePoolId, @RequestParam("postPoolId") Integer postPoolId) {
crmCustomerPoolService.transfer(prePoolId, postPoolId);
return R.ok();

View File

@ -0,0 +1,39 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.PO.CrmDjzclx;
import com.kakarote.crm.service.ICrmDjzclxService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/CrmDjzclx")
@Api(tags = "登记注册类型")
public class CrmDjzclxController {
@Autowired
private ICrmDjzclxService crmDjzclxService;
@PostMapping("/queryByDjzclxDm/{djzclxDm}")
public Result<CrmDjzclx> queryByDjzclxDm(@PathVariable("djzclxDm") String djzclxDm) {
CrmDjzclx crmDjzclx = crmDjzclxService.queryByDjzclxDm(djzclxDm);
return R.ok(crmDjzclx);
}
@PostMapping("/insert")
public Result<Integer> insert(@RequestBody CrmDjzclx crmDjzclx) {
return R.ok(crmDjzclxService.insert(crmDjzclx));
}
@PostMapping("/delete")
public Result<Integer> delete(@RequestBody CrmDjzclx crmDjzclx) {
return R.ok(crmDjzclxService.delete(crmDjzclx));
}
@PostMapping("/update")
public Result<Integer> update(@RequestBody CrmDjzclx crmDjzclx) {
return R.ok(crmDjzclxService.update(crmDjzclx));
}
}

View File

@ -0,0 +1,4 @@
package com.kakarote.crm.controller;
public class CrmEnterpriseProfileController {
}

View File

@ -0,0 +1,48 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.PO.CrmUserAnalyse;
import com.kakarote.crm.entity.VO.CrmV3SysRiskDataExposedVo;
import com.kakarote.crm.service.ICrmQyfxjcjgService;
import com.kakarote.crm.service.ICrmUserAnalyseService;
import com.kakarote.crm.service.ICrmQyfxjcjgZbmxService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.List;
@RestController
@RequestMapping("/crmGetV3Data")
public class CrmGetV3SysRiskDataController {
@Autowired
private ICrmQyfxjcjgService iCrmQyfxjcjgService;
@Autowired
private ICrmQyfxjcjgZbmxService crmQyfxjcjgZbmxService;
@Autowired
private ICrmUserAnalyseService iCrmUserAnalyseService;
@PostMapping(value = "/resp")
public Result getV3SysRiskData(@RequestBody CrmV3SysRiskDataExposedVo crmV3SysRiskDataExposedVo) throws IOException {
return Result.ok(iCrmQyfxjcjgService.getLocalRiskData(crmV3SysRiskDataExposedVo));
}
@PostMapping("/riskJcmx/{jcId}")
public Result getRiskJcmc(@PathVariable String jcId){
return Result.ok(crmQyfxjcjgZbmxService.getQyfxjcjgZbmxListByJcId(jcId));
}
@PostMapping(value = "/getTaxPreCheckUsage")
public Result getTaxPreCheckUsage() throws IOException {
return Result.ok(iCrmUserAnalyseService.addUserAnalyse());
}
@PostMapping("/syncTaxPreCheckUsageByMonth/{month}")
@ApiOperation("根据月份同步税务预检使用情况信息")
public Result<List<CrmUserAnalyse>> syncTaxPreCheckUsageByMonth(@PathVariable String month){
return Result.ok(iCrmUserAnalyseService.syncTaxPreCheckUsageByMonth(month));
}
}

View File

@ -0,0 +1,46 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.core.entity.BasePage;
import com.kakarote.crm.entity.DTO.CrmQueryGsdjxxDTO;
import com.kakarote.crm.entity.PO.CrmGsdjxx;
import com.kakarote.crm.entity.VO.CrmQueryGsdjxxVO;
import com.kakarote.crm.service.ICrmGsdjxxService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/crmGsdjxx")
public class CrmGsdjxxController {
@Autowired
private ICrmGsdjxxService iCrmGsdjxxService;
@PostMapping("/queryByMonthAndXzqhDm")
@ApiOperation("根据月份和行政区划代码查询工商登记信息")
public Result<List<CrmQueryGsdjxxVO>> queryByMonthAndXzqhDm(@RequestBody CrmQueryGsdjxxDTO crmQueryGsdjxxDTO) throws Exception {
List<CrmQueryGsdjxxVO> crmQueryGsdjxxVOList = iCrmGsdjxxService.queryByMonthAndXzqhDm(crmQueryGsdjxxDTO);
return R.ok(crmQueryGsdjxxVOList);
}
@PostMapping("/queryByNsrmc/{nsrmc}")
@ApiOperation("根据纳税人名称查询")
public Result<List<CrmGsdjxx>> queryByNsrmc(@PathVariable String nsrmc) {
List<CrmGsdjxx> crmGsdjxxList = iCrmGsdjxxService.queryByNsrmc(nsrmc);
return R.ok(crmGsdjxxList);
}
@PostMapping("/queryGsdjxxByDate")
@ApiOperation("根据日期查询(默认是当天)")
public Result<BasePage<Map<String, Object>>> queryGsdjxxByDate(@RequestBody CrmQueryGsdjxxDTO crmQueryGsdjxxDTO) {
BasePage<Map<String, Object>> basePage = iCrmGsdjxxService.queryGsdjxxByDate(crmQueryGsdjxxDTO);
return R.ok(basePage);
}
}

View File

@ -0,0 +1,23 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.PO.CrmHyDm;
import com.kakarote.crm.service.ICrmHyDmService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/crmHydm")
public class CrmHyDmController {
@Autowired
private ICrmHyDmService crmHyDmService;
@GetMapping("/queryByHyDm/{hyDm}")
@ApiOperation("根据行业代码查询")
public Result<CrmHyDm> queryByHyDm(@PathVariable("hyDm") String hyDm) {
return R.ok(crmHyDmService.queryByHyDm(hyDm));
}
}

View File

@ -15,8 +15,10 @@ import com.kakarote.crm.constant.CrmEnum;
import com.kakarote.crm.entity.BO.CrmSearchParamsBO;
import com.kakarote.crm.entity.PO.CrmActivity;
import com.kakarote.crm.entity.VO.CrmModelFiledVO;
import com.kakarote.crm.mapper.CrmInstrumentMapper;
import com.kakarote.crm.service.CrmInstrumentService;
import com.kakarote.crm.service.ICrmInstrumentSortService;
import com.kakarote.crm.service.ICrmUserAnalyseService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@ -27,11 +29,13 @@ import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@ -57,6 +61,8 @@ public class CrmInstrumentController {
@Autowired
private CrmInstrumentService instrumentService;
@Autowired
private ICrmUserAnalyseService iCrmUserAnalyseService;
@PostMapping("/queryModelSort")
@ -302,4 +308,12 @@ public class CrmInstrumentController {
}
@PostMapping("/getTaxPreCheckUsage")
@ApiOperation("获得税务预检使用情况")
public Result<JSONObject> getTaxPreCheckUsage(@RequestBody BiParams biParams){
System.out.println(biParams.getType());
JSONObject jsonObject = instrumentService.getTaxPreCheckUsage(biParams);
return R.ok(jsonObject);
}
}

View File

@ -0,0 +1,73 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.ParamAspect;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.DTO.CrmSyncNsrzgDTO;
import com.kakarote.crm.entity.PO.CrmNsrzg;
import com.kakarote.crm.service.ICrmNsrzgService;
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.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/crmNsrzg")
@Api(tags = "纳税人资格信息")
public class CrmNsrzgController {
@Autowired
private ICrmNsrzgService crmNsrzgService;
@PostMapping("/queryById/{nsrdjzgId}")
@ApiOperation("根据ID查询")
@ParamAspect
public Result<CrmNsrzg> queryById(@PathVariable("nsrdjzgId") @ApiParam(name = "id", value = "纳税人资格ID") Integer nsrdjzgId) {
CrmNsrzg nsrzg = crmNsrzgService.getNsrzg(nsrdjzgId);
return R.ok(nsrzg);
}
@PostMapping("/queryByNsrsbh/{nsrsbh}")
@ApiOperation("根据Nsrsbh查询")
public Result<CrmNsrzg> queryByNsrsbh(@PathVariable("nsrsbh") String nsrsbh){
CrmNsrzg nsrzg = crmNsrzgService.getNsrzgByNsrsbh(nsrsbh);
return R.ok(nsrzg);
}
@PostMapping("/queryByDjxh")
@ApiOperation("根据Djxh查询")
public Result<List<CrmNsrzg>> queryByDjxh(@RequestBody CrmSyncNsrzgDTO crmSyncNsrzgDTO) throws Exception {
List<CrmNsrzg> nsrzgs = crmNsrzgService.queryByDjxh(crmSyncNsrzgDTO);
return R.ok(nsrzgs);
}
@PostMapping("/syncDataByDjxh")
@ApiOperation("根据登记序号同步WebService数据至数据库")
public Result<List<CrmNsrzg>> syncDataByDjxh(@RequestBody CrmSyncNsrzgDTO crmSyncNsrzgDTO) throws Exception {
List<CrmNsrzg> crmNsrzgs = crmNsrzgService.syncDataByDjxh(crmSyncNsrzgDTO);
return R.ok(crmNsrzgs);
}
@PostMapping("/add")
@ApiOperation("保存数据")
public Result add(@RequestBody CrmNsrzg crmNsrzg) {
return R.ok(crmNsrzgService.insertNsrzg(crmNsrzg));
}
@PostMapping("/deleteById/{nsrdjzgId}")
@ApiOperation("根据ID删除数据")
public Result deleteById(@PathVariable("nsrdjzgId") String nsrdjzgId){
return R.ok(crmNsrzgService.deleteNsrzg(nsrdjzgId));
}
@PostMapping("/update")
@ApiOperation("更新数据")
public Result update(@RequestBody CrmNsrzg crmNsrzg){
return R.ok(crmNsrzgService.updateNsrzg(crmNsrzg));
}
}

View File

@ -0,0 +1,33 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.ParamAspect;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.BO.CrmAddCustomerBo;
import com.kakarote.crm.entity.BO.CrmBusinessSaveBO;
import com.kakarote.crm.entity.BO.CrmQdInfoBo;
import com.kakarote.crm.service.ICrmOpenApiService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/crmOpenApi")
@Api(tags = "crm对外接口")
public class CrmOpenApiController {
@Autowired
private ICrmOpenApiService crmOpenApiService;
@PostMapping("/crm/addCorporateSeas")
@ApiOperation("接口新增公海数据")
@ParamAspect
public Result addCorporateSeas(@RequestBody CrmQdInfoBo crmModel){
CrmBusinessSaveBO crmBusinessSaveBO = crmOpenApiService.assemblyRequestData(crmModel);
return R.ok(crmBusinessSaveBO);
}
}

View File

@ -0,0 +1,73 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.ParamAspect;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.DTO.CrmSyncQycbrsDTO;
import com.kakarote.crm.entity.PO.CrmQycbrs;
import com.kakarote.crm.entity.DTO.CrmParamAndTimeDTO;
import com.kakarote.crm.service.ICrmQycbrsService;
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.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/crmQycbrs")
@Api(tags = "企业参保人数信息")
public class CrmQycbrsController {
@Autowired
private ICrmQycbrsService crmQycbrsService;
@PostMapping("/syncDataByDjxhAndYf")
@ApiOperation("根据登记序号和月份同步WebService数据至数据库")
@ParamAspect
public Result<List<CrmQycbrs>> syncDataByDjxhAndYf(@RequestBody CrmSyncQycbrsDTO crmSyncQycbrsDTO) throws Exception {
List<CrmQycbrs> crmQycbrs = crmQycbrsService.syncDataByDjxhAndYf(crmSyncQycbrsDTO);
return R.ok(crmQycbrs);
}
@PostMapping("/queryById/{qycbrsId}")
@ApiOperation("根据ID查询")
@ParamAspect
public Result<CrmQycbrs> queryById(@PathVariable("qycbrsId") @ApiParam(name = "id", value = "企业参保人数ID") Integer qycbrsId) {
CrmQycbrs qyjxfp = crmQycbrsService.getQycbrs(qycbrsId);
return R.ok(qyjxfp);
}
@PostMapping("/queryByNsrsbhAndTime")
public Result<List<CrmQycbrs>> queryByNsrsbhAndTime(@RequestBody CrmParamAndTimeDTO vo) {
List<CrmQycbrs> qycbrsList = crmQycbrsService.getQycbrsListByNsrsbhAndTime(vo);
return R.ok(qycbrsList);
}
@PostMapping("/queryByDjxhAndTime")
@ApiOperation("根据登记序号和月份(选填)查询")
public Result<List<CrmQycbrs>> queryByDjxhAndTime(@RequestBody CrmParamAndTimeDTO dto) throws Exception {
List<CrmQycbrs> qycbrsList = crmQycbrsService.queryByDjxhAndTime(dto);
return R.ok(qycbrsList);
}
@PostMapping("/add")
@ApiOperation("保存数据")
public Result add(@RequestBody CrmQycbrs crmQycbrs) {
return R.ok(crmQycbrsService.insertQycbrs(crmQycbrs));
}
@PostMapping("/deleteById/{qycbrsId}")
@ApiOperation("根据ID删除数据")
public Result deleteById(@PathVariable("qycbrsId") String qycbrsId){
return R.ok(crmQycbrsService.deleteQycbrs(qycbrsId));
}
@PostMapping("/update")
@ApiOperation("更新数据")
public Result update(@RequestBody CrmQycbrs crmQycbrs){
return R.ok(crmQycbrsService.updateQycbrs(crmQycbrs));
}
}

View File

@ -0,0 +1,72 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.ParamAspect;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.DTO.CrmSyncQyfxmxDTO;
import com.kakarote.crm.entity.PO.CrmQyfxmx;
import com.kakarote.crm.entity.DTO.CrmParamAndTimeDTO;
import com.kakarote.crm.service.ICrmQyfxmxService;
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.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/crmQyfxmx")
@Api(tags = "企业风险明细信息")
public class CrmQyfxmxController {
@Autowired
private ICrmQyfxmxService crmQyfxmxService;
@PostMapping("/syncDataByDjxhAndPjnd")
@ApiOperation("根据登记序号和评价年度同步WebService数据至数据库")
public Result<List<CrmQyfxmx>> syncDataByDjxhAndPjnd(@RequestBody CrmSyncQyfxmxDTO crmSyncQyfxmxDTO) throws Exception {
List<CrmQyfxmx> crmQyfxmxList = crmQyfxmxService.syncDataByDjxhAndPjnd(crmSyncQyfxmxDTO);
return R.ok(crmQyfxmxList);
}
@PostMapping("/queryById/{qyzbmxId}")
@ApiOperation("根据ID查询")
@ParamAspect
public Result<CrmQyfxmx> queryById(@PathVariable("qyzbmxId") @ApiParam(name = "id", value = "企业指标明细ID") Integer qyzbmxId) {
CrmQyfxmx qyfxmx = crmQyfxmxService.getQyfxmx(qyzbmxId);
return R.ok(qyfxmx);
}
@PostMapping("/queryByNsrsbhAndTime")
@ApiOperation("根据纳税人识别号和月份(选填)查询")
public Result<List<CrmQyfxmx>> queryByNsrsbhAndTime(@RequestBody CrmParamAndTimeDTO vo){
List<CrmQyfxmx> qyfxmxList = crmQyfxmxService.getQyfxmxListByNsrsbhAndTime(vo);
return R.ok(qyfxmxList);
}
@PostMapping("/queryByDjxhAndTime")
@ApiOperation("根据登记序号和评价年度(选填)查询")
public Result<List<CrmQyfxmx>> queryByDjxhAndTime(@RequestBody CrmParamAndTimeDTO dto) throws Exception {
List<CrmQyfxmx> qyfxmxList = crmQyfxmxService.queryByDjxhAndTime(dto);
return R.ok(qyfxmxList);
}
@PostMapping("/add")
@ApiOperation("保存数据")
public Result add(@RequestBody CrmQyfxmx crmQyfxmx) {
return R.ok(crmQyfxmxService.insertQyfxmx(crmQyfxmx));
}
@PostMapping("/deleteById/{qyzbmxId}")
@ApiOperation("根据ID删除数据")
public Result deleteById(@PathVariable("qyzbmxId") String qyzbmxId){
return R.ok(crmQyfxmxService.deleteQyfxmx(qyzbmxId));
}
@PostMapping("/update")
@ApiOperation("更新数据")
public Result update(@RequestBody CrmQyfxmx crmQyfxmx){
return R.ok(crmQyfxmxService.updateQyfxmx(crmQyfxmx));
}
}

View File

@ -0,0 +1,67 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.ParamAspect;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.BO.QyjbxxBo;
import com.kakarote.crm.entity.DTO.CrmSyncQyjbxxDTO;
import com.kakarote.crm.entity.PO.CrmQyjbxx;
import com.kakarote.crm.service.ICrmQyjbxxService;
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.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/crmQyjbxx")
@Api(tags = "企业基本信息")
public class CrmQyjbxxController {
@Autowired
private ICrmQyjbxxService crmQyjbxxService;
@PostMapping("/sync")
@ParamAspect
public void syncQyjbxx(){
crmQyjbxxService.syncQyjbxx();
}
@PostMapping("/syncDataBySwjgdmAndTime")
@ApiOperation("根据事务机关代码和起止时间同步WebService数据至数据库")
public Result<List<CrmQyjbxx>> syncDataBySwjgdmAndTime(@RequestBody CrmSyncQyjbxxDTO crmSyncQyjbxxDTO) throws Exception {
List<CrmQyjbxx> crmQyjbxxList = crmQyjbxxService.syncDataBySwjgdmAndTime(crmSyncQyjbxxDTO);
return R.ok(crmQyjbxxList);
}
@PostMapping("/queryById/{qyId}")
@ApiOperation("根据ID查询")
@ParamAspect
public Result<CrmQyjbxx> queryById(@PathVariable("qyId") @ApiParam(name = "id", value = "id") Integer qyId) {
CrmQyjbxx qyjbxx = crmQyjbxxService.getQyjbxx(qyId);
return R.ok(qyjbxx);
}
@PostMapping("/add")
@ApiOperation("保存数据")
public Result add(@RequestBody CrmQyjbxx crmQyjbxx) {
return R.ok(crmQyjbxxService.insertQyjbxx(crmQyjbxx));
}
@PostMapping("/queryByCustomerId")
@ApiOperation("根据纳税人识别号查询企业基本信息")
public Result<CrmQyjbxx> queryByCustomerId(@RequestBody QyjbxxBo qyjbxxBo) {
CrmQyjbxx qyjbxxByCustomerId = crmQyjbxxService.getQyJbxxByCustomer(qyjbxxBo);
return R.ok(qyjbxxByCustomerId);
}
@PostMapping("/queryByNsrmc/{nsrmc}")
@ApiOperation("根据纳税人名称查询企业基本信息")
public Result<CrmQyjbxx> queryByNsrmc(@PathVariable("nsrmc") @ApiParam(name = "nsrmc", value = "nsrmc") String nsrmc){
CrmQyjbxx qyjbxxByNsrsbh = crmQyjbxxService.getQyjbxxByNsrmc(nsrmc);
return R.ok(qyjbxxByNsrsbh);
}
}

View File

@ -0,0 +1,75 @@
package com.kakarote.crm.controller;
import cn.hutool.core.date.DateUtil;
import com.kakarote.core.common.ParamAspect;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.DTO.CrmSyncQyjxfpAndQyxxfpDTO;
import com.kakarote.crm.entity.PO.CrmQyjxfp;
import com.kakarote.crm.entity.VO.CrmMergeListVO;
import com.kakarote.crm.entity.DTO.CrmParamAndTimeDTO;
import com.kakarote.crm.service.ICrmQyjxfpService;
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.web.bind.annotation.*;
@RestController
@RequestMapping("/crmQyjxfp")
@Api(tags = "企业进项发票信息")
public class CrmQyjxfpController {
@Autowired
private ICrmQyjxfpService crmQyjxfpService;
@PostMapping("/syncDataByShxydm")
@ApiOperation("根据社会信用代码同步WebService数据至数据库")
public Result<CrmMergeListVO> syncDataByShxydm(@RequestBody CrmSyncQyjxfpAndQyxxfpDTO dto) throws Exception {
String year = String.valueOf(DateUtil.thisYear());
CrmMergeListVO crmMergeListVO = crmQyjxfpService.syncDataByShxydm(dto,year);
return R.ok(crmMergeListVO);
}
@PostMapping("/queryById/{qyjxfpId}")
@ApiOperation("根据ID查询")
@ParamAspect
public Result<CrmQyjxfp> queryById(@PathVariable("qyjxfpId") @ApiParam(name = "id", value = "企业进项发票ID") Integer qyjxfpId) {
CrmQyjxfp qyjxfp = crmQyjxfpService.getQyjxfp(qyjxfpId);
return R.ok(qyjxfp);
}
@PostMapping("/queryMergeListByNsrsbhAndTime")
@ApiOperation("通过纳税人识别号和年度(选填),查询企业进项发票和企业销项发票信息列表")
public Result queryMergeListByNsrsbhAndTime(@RequestBody CrmParamAndTimeDTO vo){
CrmMergeListVO mergeList = crmQyjxfpService.getMergeListByNsrsbhAndTime(vo);
return R.ok(mergeList);
}
@PostMapping("/queryMergeListByShxydmAndTime")
@ApiOperation("通过社会信用代码和年度(选填),查询企业进项发票和企业销项发票信息列表")
public Result queryMergeListByShxydmAndTime(@RequestBody CrmParamAndTimeDTO dto) throws Exception {
CrmMergeListVO mergeList = crmQyjxfpService.queryMergeListByShxydmAndTime(dto);
return R.ok(mergeList);
}
@PostMapping("/add")
@ApiOperation("保存数据")
public Result add(@RequestBody CrmQyjxfp crmQyjxfp) {
return R.ok(crmQyjxfpService.insertQyjxfp(crmQyjxfp));
}
@PostMapping("/deleteById/{qyjxfpId}")
@ApiOperation("根据ID删除数据")
public Result deleteById(@PathVariable("qyjxfpId") String qyjxfpId){
return R.ok(crmQyjxfpService.deleteQyjxfp(qyjxfpId));
}
@PostMapping("/update")
@ApiOperation("更新数据")
public Result update(@RequestBody CrmQyjxfp crmQyjxfp){
return R.ok(crmQyjxfpService.updateQyjxfp(crmQyjxfp));
}
}

View File

@ -0,0 +1,75 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.ParamAspect;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.DTO.CrmSyncDataQynsrdjDTO;
import com.kakarote.crm.entity.PO.CrmQynsrdj;
import com.kakarote.crm.entity.DTO.CrmParamAndTimeDTO;
import com.kakarote.crm.service.ICrmQynsrdjService;
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.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/crmQynsrdj")
@Api(tags = "企业纳税信用登记信息")
public class CrmQynsrdjController {
@Autowired
private ICrmQynsrdjService crmQynsrdjService;
@PostMapping("/syncDataByDjxhAndPjnd")
@ApiOperation("根据登记序号和评价年度同步WebService数据至数据库")
public Result<CrmQynsrdj> syncDataByDjxhAndPjnd(@RequestBody CrmSyncDataQynsrdjDTO crmSyncDataQynsrdjDTO) throws Exception {
CrmQynsrdj qynsrdj = crmQynsrdjService.syncDataByDjxhAndPjnd(crmSyncDataQynsrdjDTO);
return R.ok(qynsrdj);
}
@PostMapping("/queryById/{qynsrdjId}")
@ApiOperation("根据ID查询")
@ParamAspect
public Result<CrmQynsrdj> queryById(@PathVariable("qynsrdjId") @ApiParam(name = "id", value = "企业纳税信用登记ID") Integer qynsrdjId) {
CrmQynsrdj qynsrdj = crmQynsrdjService.getQynsrdj(qynsrdjId);
return R.ok(qynsrdj);
}
@PostMapping("/queryByNsrsbhAndTime")
@ApiOperation("根据纳税人识别号和评价年度(选填)查询")
public Result<List<CrmQynsrdj>> queryByNsrsbhAndTime(@RequestBody CrmParamAndTimeDTO vo) {
List<CrmQynsrdj> qynsrdjList = crmQynsrdjService.getQynsrdjListByNsrsbhAndTime(vo);
return R.ok(qynsrdjList);
}
@PostMapping("/queryByDjxhAndTime")
@ApiOperation("根据登记序号和评价年度(选填)查询")
public Result<List<CrmQynsrdj>> queryByDjxhAndTime(@RequestBody CrmParamAndTimeDTO dto) throws Exception {
List<CrmQynsrdj> qynsrdjList = crmQynsrdjService.queryByDjxhAndTime(dto);
return R.ok(qynsrdjList);
}
@PostMapping("/add")
@ApiOperation("保存数据")
public Result add(@RequestBody CrmQynsrdj crmQynsrdj) {
return R.ok(crmQynsrdjService.insertQynsrdj(crmQynsrdj));
}
@PostMapping("/deleteById/{qynsrdjId}")
@ApiOperation("根据ID删除数据")
public Result deleteById(@PathVariable("qynsrdjId") String qynsrdjId){
return R.ok(crmQynsrdjService.deleteQynsrdj(qynsrdjId));
}
@PostMapping("/update")
@ApiOperation("更新数据")
public Result update(@RequestBody CrmQynsrdj crmQynsrdj){
return R.ok(crmQynsrdjService.updateQynsrdj(crmQynsrdj));
}
}

View File

@ -0,0 +1,74 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.ParamAspect;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.DTO.CrmSyncQysdsndsbDTO;
import com.kakarote.crm.entity.PO.CrmQysdsndsb;
import com.kakarote.crm.entity.DTO.CrmParamAndTimeDTO;
import com.kakarote.crm.service.ICrmQysdsndsbService;
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.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/crmQysdsndsb")
@Api(tags = "企业所得税年度申报信息")
public class CrmQysdsndsbController {
@Autowired
private ICrmQysdsndsbService crmQysdsndsbService;
@PostMapping("/syncDataByDjxhAndNd")
@ApiOperation("根据登记序号以及年度同步WebService数据至数据库")
@ParamAspect
public Result<List<CrmQysdsndsb>> syncDataByDjxhAndNd(@RequestBody CrmSyncQysdsndsbDTO crmSyncQysdsndsbDTO) throws Exception {
List<CrmQysdsndsb> qysdsndsbList = crmQysdsndsbService.syncDataByDjxhAndNd(crmSyncQysdsndsbDTO);
return R.ok(qysdsndsbList);
}
@PostMapping("/queryById/{qysdsndsbId}")
@ApiOperation("根据ID查询")
@ParamAspect
public Result<CrmQysdsndsb> queryById(@PathVariable("qysdsndsbId") @ApiParam(name = "id", value = "企业所得税年度申报ID") Integer qysdsndsbId) {
CrmQysdsndsb qysdsndsb = crmQysdsndsbService.getQysdsndsb(qysdsndsbId);
return R.ok(qysdsndsb);
}
@PostMapping("/queryByNsrsbhAndTime")
@ApiOperation("根据纳税人识别号和年度(选填)查询")
public Result<List<CrmQysdsndsb>> queryByNsrsbhAndTime(@RequestBody CrmParamAndTimeDTO vo) {
List<CrmQysdsndsb> qysdsndsbList = crmQysdsndsbService.getQysdsndsbListByNsrsbhAndTime(vo);
return R.ok(qysdsndsbList);
}
@PostMapping("/queryByDjxhAndTime")
@ApiOperation("根据登记序号和年度(选填)查询")
public Result<List<CrmQysdsndsb>> queryByDjxhAndTime(@RequestBody CrmParamAndTimeDTO dto) throws Exception {
List<CrmQysdsndsb> qysdsndsbList = crmQysdsndsbService.queryByDjxhAndTime(dto);
return R.ok(qysdsndsbList);
}
@PostMapping("/add")
@ApiOperation("保存数据")
public Result add(@RequestBody CrmQysdsndsb crmQysdsndsb) {
return R.ok(crmQysdsndsbService.insertQysdsndsb(crmQysdsndsb));
}
@PostMapping("/deleteById/{qysdsndsbId}")
@ApiOperation("根据ID删除数据")
public Result deleteById(@PathVariable("qysdsndsbId") String qysdsndsbId){
return R.ok(crmQysdsndsbService.deleteQysdsndsb(qysdsndsbId));
}
@PostMapping("/update")
@ApiOperation("更新数据")
public Result update(@RequestBody CrmQysdsndsb crmQysdsndsb){
return R.ok(crmQysdsndsbService.updateQysdsndsb(crmQysdsndsb));
}
}

View File

@ -0,0 +1,65 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.ParamAspect;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.PO.CrmQysfl;
import com.kakarote.crm.entity.DTO.CrmParamAndTimeDTO;
import com.kakarote.crm.service.ICrmQysflService;
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.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/crmQysfl")
@Api(tags = "企业税负率信息")
public class CrmQysflController {
@Autowired
private ICrmQysflService crmQysflService;
@PostMapping("/queryById/{qysflId}")
@ApiOperation("根据ID查询")
@ParamAspect
public Result<CrmQysfl> queryById(@PathVariable("qysflId") @ApiParam(name = "id", value = "企业税负率ID") Integer qysflId) {
CrmQysfl qysfl = crmQysflService.getQysfl(qysflId);
return R.ok(qysfl);
}
@PostMapping("/queryByDjxhAndTime")
@ApiOperation("根据登记序号和评价年度(选填)查询")
public Result<List<CrmQysfl>> queryByDjxhAndTime(@RequestBody CrmParamAndTimeDTO vo){
List<CrmQysfl> qysflList = crmQysflService.getQysflByDjxhAndTimeList(vo);
return R.ok(qysflList);
}
@PostMapping("/queryByNsrsbhAndTime")
@ApiOperation("根据纳税人识别号和评价年度(选填)查询")
public Result<List<CrmQysfl>> queryByNsrsbhAndTime(@RequestBody CrmParamAndTimeDTO vo){
List<CrmQysfl> qysflList = crmQysflService.getQysflByNsrsbhAndTimeList(vo);
return R.ok(qysflList);
}
@PostMapping("/add")
@ApiOperation("保存数据")
public Result add(@RequestBody CrmQysfl crmQysfl) {
return R.ok(crmQysflService.insertQysfl(crmQysfl));
}
@PostMapping("/deleteById/{qysflId}")
@ApiOperation("根据ID删除数据")
public Result deleteById(@PathVariable("qysflId") String qysflId){
return R.ok(crmQysflService.deleteQysfl(qysflId));
}
@PostMapping("/update")
@ApiOperation("更新数据")
public Result update(@RequestBody CrmQysfl crmQysfl){
return R.ok(crmQysflService.updateQysfl(crmQysfl));
}
}

View File

@ -0,0 +1,47 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.ParamAspect;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.PO.CrmQyxxfp;
import com.kakarote.crm.service.ICrmQyxxfpService;
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.web.bind.annotation.*;
@RestController
@RequestMapping("/qyxxfp")
@Api(tags = "企业销项发票信息")
public class CrmQyxxfpController {
@Autowired
private ICrmQyxxfpService crmQyxxfpService;
@PostMapping("/queryById/{qyxxfpId}")
@ApiOperation("根据ID查询")
@ParamAspect
public Result<CrmQyxxfp> queryById(@PathVariable("qyxxfpId") @ApiParam(name = "id", value = "企业进项发票ID") Integer qyxxfpId) {
CrmQyxxfp qyxxfp = crmQyxxfpService.getQyxxfp(qyxxfpId);
return R.ok(qyxxfp);
}
@PostMapping("/add")
@ApiOperation("保存数据")
public Result add(@RequestBody CrmQyxxfp crmQyxxfp) {
return R.ok(crmQyxxfpService.insertQyxxfp(crmQyxxfp));
}
@PostMapping("/deleteById/{qyxxfpId}")
@ApiOperation("根据ID删除数据")
public Result deleteById(@PathVariable("qyxxfpId") String qyxxfpId){
return R.ok(crmQyxxfpService.deleteQyxxfp(qyxxfpId));
}
@PostMapping("/update")
@ApiOperation("更新数据")
public Result update(@RequestBody CrmQyxxfp crmQyxxfp){
return R.ok(crmQyxxfpService.updateQyxxfp(crmQyxxfp));
}
}

View File

@ -0,0 +1,65 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.ParamAspect;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.DTO.CrmSyncSwjgDTO;
import com.kakarote.crm.entity.PO.CrmSwjg;
import com.kakarote.crm.service.ICrmSwjgService;
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.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/crmSwjg")
@Api(tags = "税务机关信息")
public class CrmSwjgController {
@Autowired
private ICrmSwjgService crmSwjgService;
@PostMapping("/syncDataBySwjgDmAndSjswjgDm")
@ApiOperation("根据税务机构代码同步WebService数据至数据库")
public Result<List<CrmSwjg>> syncDataBySwjgDmAndSjswjgDm(@RequestBody CrmSyncSwjgDTO crmSyncSwjgDTO) throws Exception {
List<CrmSwjg> crmSwjgs = crmSwjgService.syncDataBySwjgDmAndSjswjgDm(crmSyncSwjgDTO);
return R.ok(crmSwjgs);
}
@PostMapping("/queryById/{swjgId}")
@ApiOperation("根据ID查询")
@ParamAspect
public Result<CrmSwjg> queryById(@PathVariable("swjgId") @ApiParam(name = "id", value = "税务机关ID") Integer swjgId) {
CrmSwjg swjg = crmSwjgService.getSwjg(swjgId);
return R.ok(swjg);
}
@PostMapping("/queryBySwjgDmAndSjSwjgDm")
@ApiOperation("根据swjgDm和sjswjgdm查询")
public Result<List<CrmSwjg>> queryBySwjgDmAndSjSwjgDm(@RequestBody CrmSyncSwjgDTO crmSyncSwjgDTO) throws Exception {
List<CrmSwjg> swjgs = crmSwjgService.queryBySwjgDmAndSjSwjgDm(crmSyncSwjgDTO);
return R.ok(swjgs);
}
@PostMapping("/add")
@ApiOperation("保存数据")
public Result add(@RequestBody CrmSwjg crmSwjg) {
return R.ok(crmSwjgService.insertSwjg(crmSwjg));
}
@PostMapping("/deleteById/{swjgId}")
@ApiOperation("根据ID删除数据")
public Result deleteById(@PathVariable("swjgId") String swjgId){
return R.ok(crmSwjgService.deleteSwjg(swjgId));
}
@PostMapping("/update")
@ApiOperation("更新数据")
public Result update(@RequestBody CrmSwjg crmSwjg){
return R.ok(crmSwjgService.updateSwjg(crmSwjg));
}
}

View File

@ -0,0 +1,35 @@
package com.kakarote.crm.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.PO.CrmSwjgDm;
import com.kakarote.crm.service.ICrmSwjgDmService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/crmSwjgDm")
@Api(tags = "税务机关代码")
public class CrmSwjgDmController {
@Autowired
private ICrmSwjgDmService crmSwjgDmService;
@GetMapping("/page")
@ApiOperation("分页查询")
public Result<IPage<CrmSwjgDm>> getSwjgDmPage(@RequestParam(defaultValue = "1") int pageNum,
@RequestParam(defaultValue = "10") int pageSize) {
IPage<CrmSwjgDm> swjgDmPage = crmSwjgDmService.getSwjgDmPage(pageNum, pageSize);
return R.ok(swjgDmPage);
}
@PostMapping("/insert")
@ApiOperation("插入税务机关代码")
public Result<Integer> insert(@RequestBody CrmSwjgDm crmSwjgDm) {
return R.ok(crmSwjgDmService.insertSwjgDm(crmSwjgDm));
}
}

View File

@ -0,0 +1,43 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.PO.CrmSyQyjbxxErr;
import com.kakarote.crm.service.ICrmSyQyjbxxErrService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/crmSyQyjbxxErr")
@Api(tags = "同步失败企业参数表")
public class CrmSyQyjbxxErrController {
@Autowired
private ICrmSyQyjbxxErrService crmSyQyjbxxErrService;
@PostMapping("/queryById/{id}")
@ApiOperation("根据id进行查询")
public Result<CrmSyQyjbxxErr> queryById(@PathVariable("id") int id) {
return Result.ok(crmSyQyjbxxErrService.queryById(id));
}
@PostMapping("/insert")
@ApiOperation("新增数据")
public Result<Integer> insert(@RequestBody CrmSyQyjbxxErr crmSyQyjbxxErr) {
return Result.ok(crmSyQyjbxxErrService.insert(crmSyQyjbxxErr));
}
@PostMapping("/update")
@ApiOperation("更新数据")
public Result<Integer> update(@RequestBody CrmSyQyjbxxErr crmSyQyjbxxErr) {
return Result.ok(crmSyQyjbxxErrService.update(crmSyQyjbxxErr));
}
@PostMapping("/delete")
@ApiOperation("删除数据")
public Result<Integer> delete(@RequestBody CrmSyQyjbxxErr crmSyQyjbxxErr) {
return Result.ok(crmSyQyjbxxErrService.delete(crmSyQyjbxxErr));
}
}

View File

@ -0,0 +1,34 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.PO.CrmUsageReport;
import com.kakarote.crm.entity.VO.CrmQueryUsageReportVO;
import com.kakarote.crm.service.ICrmUsageReportService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@RestController
@RequestMapping("/crmUsageReport")
@Api(tags = "使用报告")
public class CrmUsageReportController {
@Autowired
private ICrmUsageReportService crmUsageReportService;
// @PostMapping("/queryReportScreenings")
// @ApiOperation("查询报告筛查次数")
// public Result<Integer> queryReportScreenings(@RequestBody CrmQueryUsageReportVO vo) throws IOException {
// return R.ok(crmUsageReportService.queryReportScreenings(vo));
// }
@PostMapping("/findUsageReportByNsrsbhOrNsrmc")
@ApiOperation("根据纳税人识别号或者纳税人名称查询")
public Result<CrmUsageReport> findUsageReportByNsrsbhOrNsrmc(@RequestBody CrmQueryUsageReportVO vo) throws IOException {
return R.ok(crmUsageReportService.findUsageReportByNsrsbhOrNsrmc(vo));
}
}

View File

@ -0,0 +1,42 @@
package com.kakarote.crm.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.PO.CrmXzqhDm;
import com.kakarote.crm.service.ICrmXzqhDmService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/crmXzqhDm")
@Api(tags = "行政区划代码")
public class CrmXzqhDmController {
@Autowired
private ICrmXzqhDmService crmXzqhDmService;
@GetMapping("/page")
@ApiOperation("分页查询")
public Result<IPage<CrmXzqhDm>> getXzqhDmPage(@RequestParam(defaultValue = "1") int pageNum,
@RequestParam(defaultValue = "10") int pageSize) {
IPage<CrmXzqhDm> xzqhDmPage = crmXzqhDmService.getXzqhDmPage(pageNum, pageSize);
return R.ok(xzqhDmPage);
}
@GetMapping("/list")
@ApiOperation("行政区划列表")
public Result<List<CrmXzqhDm>> getXzqhDmList() {
return R.ok(crmXzqhDmService.getXzqhDmList());
}
@PostMapping("/insert")
@ApiOperation("插入税务机关代码")
public Result<Integer> insert(@RequestBody CrmXzqhDm crmXzqhDm) {
return R.ok(crmXzqhDmService.insertXzqhDm(crmXzqhDm));
}
}

View File

@ -0,0 +1,99 @@
package com.kakarote.crm.controller;
import com.kakarote.core.common.ParamAspect;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.PO.Xzqh;
import com.kakarote.crm.entity.VO.XzqhOptionVO;
import com.kakarote.crm.service.IXzqhService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 行政区划Controller
*
* @author natural
* @date 2023-08-21
*/
@RestController
@RequestMapping("/crmXzqh")
public class XzqhController
{
@Autowired
private IXzqhService xzqhService;
/**
* 查询行政区划列表
*/
@GetMapping("/list")
public Result<List<Xzqh>> list(Xzqh xzqh)
{
List<Xzqh> list = xzqhService.selectXzqhList(xzqh);
return R.ok(list);
}
/**
* 查询行政区划列表
*/
@GetMapping("/all")
@ParamAspect
public Result<List<Xzqh>> all(Xzqh xzqh)
{
List<Xzqh> list = xzqhService.selectXzqhList(xzqh);
return R.ok(list);
}
/**
* 获取嵌套结构的行政区划数据用于前端多级选择组件
* @return 嵌套结构的行政区划数据
*/
@GetMapping("/treeOptions")
@ParamAspect
public Result<List<XzqhOptionVO>> getTreeOptions() {
List<XzqhOptionVO> options = xzqhService.buildXzqhTree();
return R.ok(options);
}
/**
* 导出行政区划列表
*/
// @PostMapping("/export")
// public void export(HttpServletResponse response, Xzqh xzqh)
// {
// List<Xzqh> list = xzqhService.selectXzqhList(xzqh);
// ExcelUtil<Xzqh> util = new ExcelUtil<Xzqh>(Xzqh.class);
// util.exportExcel(response, list, "行政区划数据");
// }
/**
* 获取行政区划详细信息
*/
@GetMapping(value = "/{id}")
public Result<Xzqh> getInfo(@PathVariable("id") String id)
{
return R.ok(xzqhService.selectXzqhById(id));
}
/**
// * 获取省行政区域
// * @return
// */
// @GetMapping("/getProvinceArea")
// public AjaxResult getProvinceArea(){
// AjaxResult ajax = AjaxResult.success();
// List<Xzqh> provinceArea = xzqhService.getProvinceArea();
// ajax.put("qyDm",provinceArea);
// return ajax;
// }
// @GetMapping("/syncXzqh")
// public AjaxResult syncXzqh(){
// AjaxResult ajax = AjaxResult.success();
// xzqhService.syncXzqhFromRpa();
// return ajax;
// }
}

View File

@ -0,0 +1,175 @@
package com.kakarote.crm.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kakarote.core.common.R;
import com.kakarote.core.common.Result;
import com.kakarote.crm.entity.DTO.ZjzbSwjgDTO;
import com.kakarote.crm.entity.VO.*;
import com.kakarote.crm.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @description: 自检指标代码表
* @Author: dengLL
* @CreateTime: 2025/12/10
*/
@RestController
@RequestMapping("/zjzbdmVo")
@Api(tags = "自检指标代码")
@Slf4j
public class ZjzbdmVoController {
@Autowired
private IZjzbdmVoService zjzbdmVoService;
@Autowired
private IZjzbdlVoService zjzbdlVoService;
@Autowired
private IZjzbxlVoService zjzbxlVoService;
@Autowired
private IZjzbglfVoService zjzbglfVoService;
@Autowired
private IZjzbHyVoService zjzbHyVoService;
@Autowired
private IZjzbZsxmVoService zjzbZsxmVoService;
@Autowired
private IZjzbSwjgVoService zjzbSwjgVoService;
@Autowired
private IZjzbDzbzdszlVoService zjzbDzbzdszlVoService;
@GetMapping("/page")
@ApiOperation("分页查询")
public Result<IPage<ZjzbdmVo>> getZjzbdmVoPage(@RequestParam(defaultValue = "1") int pageNum,
@RequestParam(defaultValue = "10") int pageSize) {
IPage<ZjzbdmVo> zjzbdmVoIPage = zjzbdmVoService.getZjzbdmVoPage(pageNum, pageSize);
return R.ok(zjzbdmVoIPage);
}
@PostMapping("/insert")
@ApiOperation("插入自检指标代码")
public Result insert(@RequestBody ZjzbdmVo entity) {
return zjzbdmVoService.insert(entity);
}
@PostMapping("/update")
@ApiOperation("修改自检指标代码")
public Result update(@RequestBody ZjzbdmVo entity) {
return zjzbdmVoService.update(entity);
}
@GetMapping("/delete")
@ApiOperation("删除自检指标代码")
public Result delete(@RequestParam("zbId") Integer zbId) {
if (Objects.isNull(zbId)){
return R.error(500,"指标代码ID为空");
}
boolean result = zjzbdmVoService.removeById(zbId);
if (result){
return R.ok("操作成功");
}
return R.error(500,"操作成功");
}
@GetMapping("/getVoById")
@ApiOperation("查询自检指标代码")
public Result getVoById(@RequestParam("zbId") Integer zbId) {
if (Objects.isNull(zbId)){
return R.error(500,"指标代码ID为空");
}
return R.ok(zjzbdmVoService.getById(zbId));
}
@GetMapping("/getZjzbdlVoList")
@ApiOperation("查询自检指标大类代码")
public Result<List<ZjzbdlVo>> getZjzbdlVoList() {
List<ZjzbdlVo> zjzbdlVos = zjzbdlVoService.lambdaQuery().orderByAsc(ZjzbdlVo::getZbdlDm).list();
return R.ok(zjzbdlVos);
}
@GetMapping("/getZjzbxlVoList")
@ApiOperation("查询自检指标小类代码")
public Result<List<ZjzbxlVo>> getZjzbxlVoList() {
List<ZjzbxlVo> zjzbxlVos = zjzbxlVoService.lambdaQuery().orderByAsc(ZjzbxlVo::getZbxlDm).list();
return R.ok(zjzbxlVos);
}
@GetMapping("/getZjzbglfVoList")
@ApiOperation("查询自检指标关联方代码")
public Result<List<ZjzbglfVo>> getZjzbglfVoList() {
List<ZjzbglfVo> zjzbglfVos = zjzbglfVoService.lambdaQuery().orderByAsc(ZjzbglfVo::getGlfDm).list();
return R.ok(zjzbglfVos);
}
@GetMapping("/getZjzbHyVoList")
@ApiOperation("查询自检指标行业合规代码")
public Result<List<ZjzbHyVo>> getZjzbHyVoList() {
List<ZjzbHyVo> zjzbHyVos = zjzbHyVoService.lambdaQuery().orderByAsc(ZjzbHyVo::getHyDm).list();
return R.ok(zjzbHyVos);
}
@GetMapping("/getZjzbZsxmVoList")
@ApiOperation("查询自检指标征收项目代码")
public Result<List<ZjzbZsxmVo>> getZjzbZsxmVoList() {
List<ZjzbZsxmVo> zjzbZsxmVos = zjzbZsxmVoService.lambdaQuery().eq(ZjzbZsxmVo::getYxbz,"Y").orderByAsc(ZjzbZsxmVo::getZsxmDm).list();
return R.ok(zjzbZsxmVos);
}
@GetMapping("/getZjzbSwjgVoList")
@ApiOperation("查询自检指标税务机关代码")
public Result<List<ZjzbSwjgDTO>> getZjzbSwjgVoList() {
List<ZjzbSwjgDTO> zjzbSwjgDTOS = new ArrayList<>();
//获取主管税务机关代码
List<ZjzbSwjgVo> zgswjgList = zjzbSwjgVoService.lambdaQuery()
.eq(ZjzbSwjgVo::getYxbz,"Y")
.eq(ZjzbSwjgVo::getJgjcDm,"41")
.eq(ZjzbSwjgVo::getSwjgbz,"0")
.orderByAsc(ZjzbSwjgVo::getSwjgDm)
.list();
//获取主管税务机关科分局代码
for (ZjzbSwjgVo vo:zgswjgList){
ZjzbSwjgDTO dto = new ZjzbSwjgDTO();
List<ZjzbSwjgVo> zgswjgkfjList = zjzbSwjgVoService.lambdaQuery()
.eq(ZjzbSwjgVo::getYxbz,"Y")
.eq(ZjzbSwjgVo::getBsfwtbz,"N")
.eq(ZjzbSwjgVo::getGhbz,"Y")
.eq(ZjzbSwjgVo::getSjswjgDm,vo.getSwjgDm())
.orderByAsc(ZjzbSwjgVo::getSwjgDm)
.list();
dto.setZjzbSwjgVo(vo);
dto.setZjzbSwjgVos(zgswjgkfjList);
zjzbSwjgDTOS.add(dto);
}
return R.ok(zjzbSwjgDTOS);
}
@GetMapping("/getZjzbDzbzdszlVoList")
@ApiOperation("查询自检指标应征凭证种类代码")
public Result<List<ZjzbDzbzdszlVo>> getZjzbDzbzdszlVoList() {
List<ZjzbDzbzdszlVo> zjzbDzbzdszlVos = zjzbDzbzdszlVoService.lambdaQuery()
.eq(ZjzbDzbzdszlVo::getYxbz,"Y")
.eq(ZjzbDzbzdszlVo::getXybz,"Y")
.orderByAsc(ZjzbDzbzdszlVo::getDzbzdszlDm)
.list();
return R.ok(zjzbDzbzdszlVos);
}
}

View File

@ -0,0 +1,19 @@
package com.kakarote.crm.entity.BO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
@ApiModel("签到crm添加企业OpenAPi")
@Data
public class CrmAddCustomerBo {
@NotEmpty(message = "appId不能为空")
private String appId;
@NotEmpty(message = "appSecret不能为空")
private String appSecret;
@ApiModelProperty("客户信息对象")
@NotEmpty(message = "客户信息不能为空!")
private CrmQdInfoBo crmModel;
}

View File

@ -0,0 +1,21 @@
package com.kakarote.crm.entity.BO;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.kakarote.crm.entity.PO.CrmQyjxfp;
import com.kakarote.crm.entity.PO.CrmQyxxfp;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class CrmAddMergeListBO implements Serializable {
// 企业销项发票
@JsonProperty("xxhzList")
private List<CrmQyxxfp> xxhzList;
// 企业进项发票
@JsonProperty("jxhzList")
private List<CrmQyjxfp> jxhzList;
}

View File

@ -0,0 +1,48 @@
package com.kakarote.crm.entity.BO;
import lombok.Data;
@Data
public class CrmQdInfoBo {
/** 微信unionid */
private String unionId;
/** 企业名称 */
private String qyName;
/** 用户姓名 */
private String userName;
/** 手机 */
private String mobile;
/** 活码id */
private String hmId;
/** 纳税人识别号 */
private String nsrsbh;
/** 所属税务局 */
private String sssj;
/** 注册时间 */
private String zcTime;
/** 行业类型 */
private String hyType;
/** 企业地址 */
private String address;
private String qwId;
//客户来源
private String source;
private String appId;
private String appSecret;
}

View File

@ -0,0 +1,31 @@
package com.kakarote.crm.entity.BO;
import cn.hutool.core.date.DateTime;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
public class CrmQueryQyfxmxBO {
// 登记序号
private String djxh;
// 开始时间
private String fxscsjq;
// 结束时间
private String fxscsjz;
@Override
public String toString() {
return "{" +
"djxh:'" + djxh + '\'' +
", fxscsjq:'" + fxscsjq + '\'' +
", fxscsjz:'" + fxscsjz + '\'' +
'}';
}
}

View File

@ -0,0 +1,26 @@
package com.kakarote.crm.entity.BO;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel("企业信息")
public class QyjbxxBo {
/**
* 纳税人识别号
*/
private String nsrsbh;
/**
* 客户Id
*/
private Integer customerId;
/**
* 公海Id
*/
private Integer poolId;
/**
* 纳税人名称
*/
private String nsrmc;
}

View File

@ -0,0 +1,12 @@
package com.kakarote.crm.entity.DTO;
import lombok.Data;
import org.apache.poi.ss.formula.functions.T;
@Data
public class CrmHttpResponseDTO<T> {
private int code;
private String msg;
private T data;
}

View File

@ -0,0 +1,17 @@
package com.kakarote.crm.entity.DTO;
import lombok.Data;
@Data
public class CrmParamAndTimeDTO {
/**
* 根据接口不同param可能是djxh也可能是shxydm
*/
private String param;
/**
* 根据接口不同time可能是nd也可能是yf
*/
private String time;
}

View File

@ -0,0 +1,35 @@
package com.kakarote.crm.entity.DTO;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Getter
@Setter
@Accessors(chain = true)
public class CrmQueryGsdjxxDTO implements Serializable {
private static final long serialVersionUID = 1L;
// 月份
private String yf;
private String rq;
// 行政区划代码
private String xzqhDm;
// 地址
private String xzqhMc;
@Override
public String toString() {
return "{" +
"yf:'" + yf + '\'' +
", rq:'" + rq + '\'' +
", xzqhDm:'" + xzqhDm + '\'' +
'}';
}
}

View File

@ -0,0 +1,29 @@
package com.kakarote.crm.entity.DTO;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Getter
@Setter
@Accessors(chain = true)
public class CrmSyncDataQynsrdjDTO implements Serializable {
private static final long serialVersionUID = 1L;
// 登记序号
private String djxh;
// 评价年度
private String pjnd;
@Override
public String toString() {
return "{" +
"djxh:'" + djxh + '\'' +
", pjnd:'" + pjnd + '\'' +
'}';
}
}

View File

@ -0,0 +1,23 @@
package com.kakarote.crm.entity.DTO;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
public class CrmSyncNsrzgDTO implements Serializable {
private static final long serialVersionUID = 1L;
// 登记序号
private String djxh;
@Override
public String toString() {
return "{" +
"djxh:'" + djxh + '\'' +
'}';
}
}

View File

@ -0,0 +1,29 @@
package com.kakarote.crm.entity.DTO;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Getter
@Setter
@Accessors(chain = true)
public class CrmSyncQycbrsDTO implements Serializable {
private static final long serialVersionUID = 1L;
// 月份
private String yf;
// 登记序号
private String djxh;
@Override
public String toString() {
return "{" +
"yf:'" + yf + '\'' +
", djxh:'" + djxh + '\'' +
'}';
}
}

View File

@ -0,0 +1,19 @@
package com.kakarote.crm.entity.DTO;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@Accessors(chain = true)
public class CrmSyncQyfxmxDTO implements Serializable {
private static final long serialVersionUID = 1L;
// 登记序号
private String djxh;
// 评价年度
private String pjnd;
}

View File

@ -0,0 +1,31 @@
package com.kakarote.crm.entity.DTO;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
public class CrmSyncQyjbxxDTO implements Serializable {
private static final long serialVersionUID = 1L;
// 区县税务机关代码
private String swjgdm;
// 查询起始时间
private String cxrqq;
// 查询终止时间
private String cxrqz;
@Override
public String toString() {
return "{" +
"swjgdm:'" + swjgdm + '\'' +
", cxrqq:'" + cxrqq + '\'' +
", cxrqz:'" + cxrqz + '\'' +
'}';
}
}

View File

@ -0,0 +1,25 @@
package com.kakarote.crm.entity.DTO;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Getter
@Setter
@Accessors(chain = true)
public class CrmSyncQyjxfpAndQyxxfpDTO implements Serializable {
private static final long serialVersionUID = 1L;
// 社会信用代码
private String shxydm;
@Override
public String toString() {
return "{" +
"shxydm:'" + shxydm + '\'' +
'}';
}
}

View File

@ -0,0 +1,28 @@
package com.kakarote.crm.entity.DTO;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Getter
@Setter
@Accessors(chain = true)
public class CrmSyncQysdsndsbDTO implements Serializable {
private static final long serialVersionUID = 1L;
// 登记序号
private String djxh;
// 年度
private String nd;
@Override
public String toString() {
return "{" +
"djxh:'" + djxh + '\'' +
", nd:'" + nd + '\'' +
'}';
}
}

View File

@ -0,0 +1,29 @@
package com.kakarote.crm.entity.DTO;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Getter
@Setter
@Accessors(chain = true)
public class CrmSyncSwjgDTO implements Serializable {
private static final long serialVersionUID = 1L;
// 税务机关代码(必填)
private String swjgdm;
// 上级税务机关代码(选填)
private String sjswjgdm;
@Override
public String toString() {
return "{" +
"swjgdm:'" + swjgdm + '\'' +
'}';
}
}

View File

@ -0,0 +1,32 @@
package com.kakarote.crm.entity.DTO;
import lombok.Data;
import java.io.Serializable;
@Data
public class CrmTaxPreCheckUsageDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 活跃用户数
*/
private Integer activeUserCount;
/**
* 使用用户数
*/
private Integer usedUserCount;
/**
* 新增企业数
*/
private Integer newEnterprises;
/**
* 注册人数
*/
private Integer registeredUsers;
}

View File

@ -0,0 +1,12 @@
package com.kakarote.crm.entity.DTO;
import lombok.Data;
@Data
public class CrmWebServiceResponseDTO<T> {
private int code;
private String msg;
private T data;
}

View File

@ -0,0 +1,24 @@
package com.kakarote.crm.entity.DTO;
import com.kakarote.crm.entity.VO.ZjzbSwjgVo;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
/**
* @description: 自检指标税务机关DTO
* @Author: dengLL
* @CreateTime: 2025/12/10
*/
@Setter
@Getter
public class ZjzbSwjgDTO implements Serializable {
private static final long serialVersionUID = 1L;
private ZjzbSwjgVo zjzbSwjgVo;
private List<ZjzbSwjgVo> zjzbSwjgVos;
}

View File

@ -1,11 +1,13 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.*;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
import java.util.Date;
@ -37,12 +39,17 @@ public class CrmContacts implements Serializable {
private Date nextTime;
@ApiModelProperty(value = "手机")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String mobile;
@ApiModelProperty(value = "电话")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String telephone;
@ApiModelProperty(value = "电子邮箱")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String email;
@ApiModelProperty(value = "职务")

View File

@ -0,0 +1,80 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("wk_crm_corporate_portrait")
@ApiModel(value="CrmCorporatePortrait对象", description="企业形象")
public class CrmCorporatePortrait implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 企业规模
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String enterpriseSize;
/**
* 行业类型
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String industryType;
/**
* 信用等级
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String creditRating;
/**
* 社保人数
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String socialSecurity;
/**
* 产品是否使用 0/1
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String productsIs;
/**
* 产品注册时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String productsDate;
/**
* 报告查询次数
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String reportNum;
/**
* 是否点击深度报告0/1
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String inDepthReporting;
/**
* 纳税人名称
*/
private String nsrmc;
}

View File

@ -1,11 +1,16 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
import java.util.Date;
@ -51,18 +56,36 @@ public class CrmCustomer implements Serializable {
@ApiModelProperty(value = "首要联系人ID")
private Integer contactsId;
//税号
private String website;
@ApiModelProperty(value = "手机")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String mobile;
@ApiModelProperty(value = "电话")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String telephone;
@ApiModelProperty(value = "网址")
private String website;
@ApiModelProperty(value = "邮箱")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String email;
@ApiModelProperty(value = "省市区")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String address;
@ApiModelProperty(value = "详细地址")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String detailAddress;
@ApiModelProperty(value = "地理位置经度")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String lng;
@ApiModelProperty(value = "地理位置维度")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String lat;
@ApiModelProperty(value = "备注")
private String remark;
@ -73,21 +96,11 @@ public class CrmCustomer implements Serializable {
@ApiModelProperty(value = "负责人ID")
private Long ownerUserId;
@ApiModelProperty(value = "省市区")
private String address;
@ApiModelProperty(value = "定位信息")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String location;
@ApiModelProperty(value = "详细地址")
private String detailAddress;
@ApiModelProperty(value = "地理位置经度")
private String lng;
@ApiModelProperty(value = "地理位置维度")
private String lat;
@ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Date createTime;

View File

@ -0,0 +1,45 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("wk_crm_djzclx")
@ApiModel(value = "CrmDjzclx对象", description = "登记注册类型表")
public class CrmDjzclx implements Serializable {
private static final long serialVersionUID = 1L;
// 登记注册类型代码
private String djzclxDm;
//登记注册类型名称
private String djzclxmc;
//顶类标志
private String dlbz;
//中类标志
private String zlbz;
//小类标志
private String xlbz;
//上级登记注册类型代码
private String sjdjzclxDm;
//选用标志
private String xybz;
//有效标志
private String yxbz;
}

View File

@ -0,0 +1,173 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("wk_crm_gsdjxx")
@ApiModel(value="CrmGsdjxx对象", description="工商登记开业信息")
public class CrmGsdjxx implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 工商登记信息ID主键
*/
@TableId(value = "gxdjxx_id", type = IdType.AUTO)
private Integer gxdjxxId; // 对应SQL: gxdjxx_id
/**
* 行政区划代码
*/
private String xzqhDm; // 对应SQL: xzqh_dm
/**
* 月份格式yyyy-MM
*/
private String yf; // 对应SQL: yf
/**
* 统一社会信用代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String tyshxydm; // 对应SQL: tyshxydm
/**
* 企业名称
*/
private String nsrmc; // 对应SQL: nsrmc
/**
* 登记注册类型代码
*/
private String djzclxDm; // 对应SQL: djzclx_dm
/**
* 开业日期格式yyyy-MM-dd
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String kyrq; // 对应SQL: kyrq
/**
* 证照号码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zzhm; // 对应SQL: zzhm
/**
* 法人姓名
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fddbrxm; // 对应SQL: fddbrxm
/**
* 法人证件类型代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fddbrsfzjlxDm; // 对应SQL: fddbrsfzjlx_dm
/**
* 法人证件号码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fddbrsfzjhm; // 对应SQL: fddbrsfzjhm
/**
* 法人固定电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fddbrgddh; // 对应SQL: fddbrgddh
/**
* 法人移动电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fddbryddh; // 对应SQL: fddbryddh
/**
* 财务负责人姓名
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cwfzrxm; // 对应SQL: cwfzrxm
/**
* 财务负责人证件号码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cwfzrsfzjhm; // 对应SQL: cwfzrsfzjhm
/**
* 财务固定电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cwfzrgddh; // 对应SQL: cwfzrgddh
/**
* 财务移动电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cwfzryddh; // 对应SQL: cwfzryddh
/**
* 生产经营地址
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String scjydz; // 对应SQL: scjydz
/**
* 生产经营地区划代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String scjydzxzqhszDm; // 对应SQL: scjydzxzqhsz_dm
/**
* 生产经营地联系电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String scjydlxdh; // 对应SQL: scjydlxdh
/**
* 生产经营地邮政编码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String scjydyzbm; // 对应SQL: scjydyzbm
/**
* 国标行业代码GB/T 4754
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String hyDm; // 对应SQL: hy_dm
/**
* 从业人数
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cyrs; // 对应SQL: cyrs
/**
* 批准设立机构名称
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String pzsljgmc; // 对应SQL: pzsljgmc
/**
* 经营范围
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String jyfw; // 对应SQL: jyfw
@TableField(exist = false)
private String dz;
}

View File

@ -0,0 +1,66 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("hy_dm")
@ApiModel(value="CrmHyDm对象", description="行业代码表")
public class CrmHyDm implements Serializable {
/**
* 行业代码
*/
@TableId(value = "hy_dm", type = IdType.AUTO)
private String hyDm;
/**
* 行业名称
*/
private String hymc;
/**
* 门类标志
*/
private String mlbz;
/**
* 大类标志
*/
private String dlbz;
/**
* 种类标志
*/
private String zlbz;
/**
* 小类标志
*/
private String xlbz;
/**
* 上级行业代码
*/
private String sjhyDm;
/**
* 选用标志
*/
private String xybz;
/**
* 有效标志
*/
private String yxbz;
}

View File

@ -43,7 +43,7 @@ public class CrmInstrumentSort implements Serializable {
@ApiModelProperty(value = "用户id")
private Long userId;
@ApiModelProperty(value = "模块id 1、合同金额目标及完成情况 2、数据汇总 3、回款金额目标及完成情况 4、业绩指标完成率 5、销售漏斗 6、遗忘提醒 7、排行榜")
@ApiModelProperty(value = "模块id 1、税务预检使用情况 2、合同金额目标及完成情况 3、数据汇总 4、回款金额目标及完成情况 5、业绩指标完成率 6、销售漏斗 7、遗忘提醒 8、排行榜")
private Integer modelId;
@ApiModelProperty(value = "列 1左侧 2右侧")

View File

@ -1,11 +1,13 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.*;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
import java.util.Date;
@ -45,16 +47,20 @@ public class CrmLeads implements Serializable {
@ApiModelProperty(value = "下次联系时间")
private Date nextTime;
@ApiModelProperty(value = "电话")
@ApiModelProperty(value = "联系人姓名")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String telephone;
@ApiModelProperty(value = "手机号")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String mobile;
@ApiModelProperty(value = "邮箱")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String email;
@ApiModelProperty(value = "地址")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String address;
@ApiModelProperty(value = "备注")

View File

@ -0,0 +1,102 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
import java.util.Date;
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("wk_crm_nsrzg")
@ApiModel(value="CrmNsrzg对象", description="纳税人资格")
public class CrmNsrzg implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "nsrdjzg_id", type = IdType.AUTO)
/**
* 纳税人资格Id primary key
*/
private Integer nsrdjzgId;
/**
* 认定凭证UUID
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String rdpzuuid;
/**
* 登记序号
*/
private String djxh;
/**
* 流程实例ID
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String lcslid;
/**
* 纳税人资格类型代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String nsrzglxDm;
/**
* 有效期起
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String yxqq;
/**
* 有效期止
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String yxqz;
/**
* 数据终止日期
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String sjzzrq;
/**
* 创建时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date createTime;
/**
* 创建人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String createBy;
/**
* 更新时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date updateTime;
/**
* 更新人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String updateBy;
@TableField(exist = false)
private String zfbz1;
@TableField(exist = false)
private String qxbz;
}

View File

@ -0,0 +1,71 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
import java.util.Date;
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("wk_crm_qycbrs")
@ApiModel(value="CrmQycbrs对象", description="企业参保人数")
public class CrmQycbrs implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "qycbrs_id", type = IdType.AUTO)
/**
* 纳税人资格Id primary key
*/
private Integer qycbrsId;
/**
* 月份
*/
private String yf;
/**
* 参保人数
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cbrs;
/**
* 创建时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date createTime;
/**
* 创建人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String createUp;
/**
* 更新时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date updateTime;
/**
* 更新人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String updateBy;
/**
* 登记序号
*/
private String djxh;
}

View File

@ -0,0 +1,94 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("wk_crm_qyfxjcjg")
@ApiModel(value="CrmQyfxjcjg对象", description="风险模块风险指标检测批次结果表")
public class CrmQyfxjcjg implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "jcpc_uuid", type = IdType.ASSIGN_UUID)
/**
* 监测批次UUID primary key
*/
private String jcpcUuid;
/**
* 企业id
*/
private String qyid;
/**
* 企业识别号
*/
private String qysbh;
/**
* 风险监测批次结果
*/
private String fxjcPcjg;
/**
* 监测时间
*/
private Date jcsj;
/**
* 监测所属期起
*/
private Date jcSsqq;
/**
* 监测所属期止
*/
private Date jcSsqz;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人
*/
private String createBy;
/**
* 更新时间
*/
private Date updateTime;
/**
* 更新人
*/
private String updateBy;
/**
* 纳税人名称
*/
private String nsrmc;
/**
* 批量监测id
*/
private String pljcId;
@TableField(exist = false)
private List<CrmQyfxjcjgZbmx> crmQyfxjcjgZbmxList;
}

View File

@ -0,0 +1,74 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("wk_crm_qyfxjcjg_zbmx")
@ApiModel(value="CrmQyfxjcjgZbmx对象", description="风险模块风险指标检测批次结果指标明细表")
public class CrmQyfxjcjgZbmx implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "zbmx_uuid", type = IdType.ASSIGN_UUID)
/**
* 指标明细UUID primary key
*/
private String zbmxUuid;
/**
* 监测批次UUID
*/
private String jcpcUuid;
/**
* 风险指标代码
*/
private String fxzbDm;
/**
* 风险指标检测结果
*/
private String fxzbJcjg;
/**
* 监测时间
*/
private Date jcsj;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人
*/
private String createBy;
/**
* 更新时间
*/
private Date updateTime;
/**
* 更新人
*/
private String updateBy;
/**
* 指标检测状态
*/
private Integer code;
}

View File

@ -0,0 +1,91 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("wk_crm_qyfxmx")
@ApiModel(value="CrmQyfxmx", description="企业风险明细")
public class CrmQyfxmx implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "qyzbmx_id", type = IdType.AUTO)
/**
* 企业指标明细id
*/
private Integer qyzbmxId;
/**
* 评价年度
*/
private String pjnd;
/**
* 风险指标代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fxzbDm;
/**
* 风险描述
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fxms;
/**
* 创建时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date createTime;
/**
* 创建人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String createBy;
/**
* 更新时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date updateTime;
/**
* 更新人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String updateBy;
/**
* 登记序号
*/
private String djxh;
/**
* 纳税人名称
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String nsrmc;
/**
* 纳税人识别号
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String nsrsbh;
}

View File

@ -0,0 +1,521 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
import java.util.Date;
/**
* @description wk_crm_qyjbxx
* @author https://www.json.cn/
* @date 2025-06-05
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("wk_crm_qyjbxx")
@ApiModel(value="CrmQyjbxx对象", description="企业基本信息")
public class CrmQyjbxx implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "qy_id", type = IdType.AUTO)
/**
* 企业Id primary key
*/
private Integer qyId;
/**
* 企业登记序号
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String djxh;
/**
* 纳税人识别号
*/
private String nsrsbh;
/**
* 纳税人名称
*/
private String nsrmc;
/**
* 课征主体登记类型代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String kzztdjlxDm;
/**
* 登记注册类型代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String djzclxDm;
/**
* 生产经营地址
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String scjydz;
/**
* 生产经营地址行政区划数字代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String scjydzxzqhszDm;
/**
* 纳税人状态代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String nsrztDm;
/**
* 行业代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String hyDm;
/**
* 注册地址
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zcdz;
/**
* 注册地址行政区划数字代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zcdzxzqhszDm;
/**
* 街道乡镇代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String jdxzDm;
/**
* 单位隶属关系代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String dwlsgxDm;
/**
* 登记日期
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String djrq;
/**
* 跨区财产税主体登记标志
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String kqccsztdjbz;
/**
* 主管税务局代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zgswjDm;
/**
* 主管税务所分局代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zgswskfjDm;
/**
* shxydm
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String shxydm;
/**
* 税收管理员代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String ssglyDm;
/**
* 非居民企业标志
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fjmqybz;
/**
* 有效标志
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String yxbz;
/**
* 工商注销日期
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String gszxrq;
/**
* 企业划型类别
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String qyhxlbDm;
/**
* 企业划型来源
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String qyhxly;
/**
* 经营范围
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String jyfw;
/**
* 注册地联系电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zcdlxdh;
/**
* 注册地邮政编码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zcdyzbm;
/**
* 生产经营地联系电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String scjydlxdh;
/**
* 生产经营地邮政编码生产经营地邮政编码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String scjydyzbm;
/**
* 核算方式代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String hsfsDm;
/**
* 从业人数
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cyrs;
/**
* 外籍从业人数
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String wjcyrs;
/**
* 合伙人数
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String hhrs;
/**
* 雇工人数
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String ggrs;
/**
* 固定工人数
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String gdgrs;
/**
* 组织机构类型代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zzjglxDm;
/**
* 会计制度准则代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String kjzdzzDm;
/**
* 税务代理人联系电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String swdlrlxdh;
/**
* 税务代理人电子信箱
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String swdlrdzxx;
/**
* 注册资本
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zczb;
/**
* 投资总额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String tzze;
/**
* 自然人投资比例
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zrrtzbl;
/**
* 外资投资比例
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String wztzbl;
/**
* 国有投资比例
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String gytzbl;
/**
* 国有控股类型代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String gykglxDm;
/**
* 总分机构类型代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zfjglxDm;
/**
* 法定代表人姓名
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fddbrxm;
/**
* 法定代表人身份证件类型代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fddbrsfzjlxDm;
/**
* 法定代表人身份证号码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fddbrsfzjhm;
/**
* 法定代表人固定电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fddbrgddh;
/**
* 法定代表人移动电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fddbryddh;
/**
* 法定代表人电子信箱
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String fddbrdzxx;
/**
* 财务负责人姓名
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cwfzrxm;
/**
* 财务负责人身份证件种类代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cwfzrsfzjzlDm;
/**
* 财务负责人身份证件号码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cwfzrsfzjhm;
/**
* 财务负责人固定电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cwfzrgddh;
/**
* 财务负责人移动电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cwfzryddh;
/**
* 财务负责人电子信箱
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cwfzrdzxx;
/**
* 办税人姓名
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String bsrxm;
/**
* 办税人身份证件种类代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String bsrsfzjzlDm;
/**
* 办税人身份证件号码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String bsrsfzjhm;
/**
* 办税人固定电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String bsrgddh;
/**
* 办税人移动电话
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String bsryddh;
/**
* 办税人电子信箱
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String bsrdzxx;
/**
* 临时税务登记有效期起
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String lsswdjyxqq;
/**
* 临时税务登记有效期止
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String lsswdjyxqz;
/**
* 税务代理人纳税人识别号
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String swdlrnsrsbh;
/**
* 税务代理人名称
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String swdlrmc;
/**
* 文化事业建设费缴费信息登记标志
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String whsyjsfjfxxdjbz;
/**
* 增值税经营类别
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zzsjylb;
/**
* 印花税缴纳方式代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String yhsjnfsDm;
/**
* 征收项目城乡标志代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zsxmcxbzDm;
/**
* 增值税企业类型代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zzsqylxDm;
/**
* 国家或地区数字代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String gjhdqszDm;
/**
* 企业管理层级编号
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String qyglcjbh;
/**
* 企业所属集团代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String qyssjtDm;
/**
* 受托方社会信用代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String stfshxydm;
/**
* 创建时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date createTime;
/**
* 创建人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String createBy;
/**
* 更新时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date updateTime;
/**
* 更新人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String updateBy;
}

View File

@ -0,0 +1,57 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
import java.io.Serializable;
@EqualsAndHashCode(callSuper = true)
@Data
@ToString(callSuper = true)
public class CrmQyjbxxDjrqDetail extends CrmQyjbxx implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("djrq")
@TableField(exist = false)
private DjrqDetail djrqDetail;
@Data
public static class DjrqDetail implements Serializable {
private static final long serialVersionUID = 1L;
//
private String year;
//
private String month;
// 星期
private String day;
// 日期
private String date;
//
private String hours;
//
private String minutes;
//
private String seconds;
//
private String nanos;
// 时间戳
private String time;
// 时区
private String timezoneOffset;
}
}

View File

@ -0,0 +1,90 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("wk_crm_qyjxfp")
@ApiModel(value="CrmQyjxfp对象", description="企业进项发票信息")
public class CrmQyjxfp implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "qyjxfp_id", type = IdType.AUTO)
/**
* 企业进项发票信息Id primary key
*/
private Integer qyjxfpId;
/**
* 年度
*/
private String nd;
/**
* 不含税金额
*/
@JsonProperty("jxbhsje")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String jxBhsje;
/**
* 进税金额
*/
@JsonProperty("jxse")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String jxSe;
/**
* 进项价税合计
*/
@JsonProperty("jxjshj")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String jxJshj;
/**
* 社会信用代码
*/
private String shxydm;
/**
* 创建时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date createTime;
/**
* 创建人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String createBy;
/**
* 更新时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date updateTime;
/**
* 更新人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String updateBy;
}

View File

@ -0,0 +1,71 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("wk_crm_qynsrdj")
@ApiModel(value="CrmQynsrdj", description="企业纳税信用登记")
public class CrmQynsrdj implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "qynsxydj_id", type = IdType.AUTO)
/**
* 企业纳税信用登记id
*/
private Integer qynsxydjId;
/**
* 登记序号
*/
private String djxh;
/**
* 评价年度
*/
private String pjnd;
/**
* 评价等级
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String pjjg;
/**
* 创建时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date createTime;
/**
* 创建人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String createBy;
/**
* 更新时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date updateTime;
/**
* 更新人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String updateBy;
}

View File

@ -0,0 +1,324 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("wk_crm_qysdsndsb")
@ApiModel(value="CrmQysdsndsb对象", description="企业所得税年度申报信息")
public class CrmQysdsndsb implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "qysdsndsb_id", type = IdType.AUTO)
/**
* 企业所得税年度申报信息Id primary key
*/
private Integer qysdsndsbId;
/**
* 登记序号
*/
private String djxh;
/**
* 年度
*/
private String nd;
/**
* UUID
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String uuid;
/**
* 申报UUID
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String sbuuid;
/**
* 税款所属期起
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String skssqq;
/**
* 税款所属期止
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String skssqz;
/**
* 凭证序号
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String pzxh;
/**
* 营业收入
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String yysr;
/**
* 营业成本
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String yycb;
/**
* 营业税金及附加
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String yysjFj;
/**
* 销售费用
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String xsfy;
/**
* 管理费用
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String glfy;
/**
* 财务费用
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String cwfy;
/**
* 资产减值损失
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zcjzss;
/**
* 公允价值变动收益
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String gyjzbdsy;
/**
* 投资收益
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String tzsy;
/**
* 营业利润
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String yylr;
/**
* 营业外收入
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String yywsr;
/**
* 营业外支出
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String yywzc;
/**
* 利润总额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String lrze;
/**
* 境外所得金额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String jwsdje;
/**
* 纳税调整增加额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String nstzzje;
/**
* 纳税调整减少额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String nstzjse;
/**
* :免税减计收入以及加计扣除
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String msjjsrjjjkc;
/**
* :境外应税所得抵减境内亏损
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String jwyssddjjnks;
/**
* 纳税调整后所得
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String nstzhsd;
/**
* :所得减免
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String sdjm;
/**
* 抵扣应纳税所得额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String dkynssde;
/**
* 弥补以前年度亏损
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String mbyqndks;
/**
* 应纳税所得额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String ynssde;
/**
* 税率
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String sl1;
/**
* 应纳所得税额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String ynsdse;
/**
* 免所得税额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String jmsdse;
/**
* 抵免所得税额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String dmsdse;
/**
* 应纳税额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String ynse;
/**
* 境外所得应纳所得税额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String jwsdynsdse;
/**
* :境外所得抵免所得税额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String jwsddmsdse;
/**
* 实际应纳所得税额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String sjynsdse;
/**
* 本年累计实际已预缴的所得税额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String bnljsjyyjSdse;
/**
* 本年应补退的所得税额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String bnybtSdse;
/**
* 总机构分摊本年应补退所得税额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zjgftbnybtsdse;
/**
* 财政集中分配本年应补退所得税额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String czjzfpbnybtsdse;
/**
* 总机构主体生产经营部门分摊本年应补退所得税额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String zjgztscjybmftbnybtsdse;
/**
* 以前年度多缴的所得税额在本年抵减额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String yqnddjSdseBndje;
/**
* 以前年度应缴未缴在本年入库所得税额
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String yqndYjwjzbnrksdse;
/**
* 创建时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date createTime;
/**
* 创建人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String createBy;
/**
* 更新时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date updateTime;
/**
* 更新人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String updateBy;
}

View File

@ -0,0 +1,78 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("wk_crm_qysfl")
@ApiModel(value="CrmQysfl", description="企业税负率")
public class CrmQysfl implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "qysfl_id", type = IdType.AUTO)
/**
* 企业税负率id
*/
private Integer qysflId;
/**
* 登记序号
*/
private String djxh;
/**
* 月份呢
*/
private String yf;
/**
* 增值税税负率
*/
private String zzsSfl;
/**
* 增值税行业税负率
*/
private String zzsHySfl;
/**
* 企业所得税税负率
*/
private String qysdsSfl;
/**
* 企业所得税行业税负率
*/
private String qysdsHySfl;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人
*/
private String createBy;
/**
* 更新时间
*/
private Date updateTime;
/**
* 更新人
*/
private String updateBy;
}

View File

@ -0,0 +1,101 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("wk_crm_qyxxfp")
@ApiModel(value="CrmQyxxfp对象", description="企业销项发票")
public class CrmQyxxfp implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "qyxxfp_id", type = IdType.AUTO)
/**
* 销项发票Id primary key
*/
private Integer qyxxfpId;
/**
* 年度
*/
private String nd;
/**
* 销项不含税金额
*/
@JsonProperty("xxbhsje")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String xxBhsje;
/**
* 销项税额
*/
@JsonProperty("xxse")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String xxSe;
/**
* 销项价税合计
*/
@JsonProperty("xxjshj")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String xxJshj;
/**
* 销项年开票数量
*/
@JsonProperty("xxkpsl")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String xxKpsl;
/**
* 销项年最大开票额
*/
@JsonProperty("xxzdkpe")
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String xxZdkpe;
/**
* 社会信用代码
*/
private String shxydm;
/**
* 创建时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date createTime;
/**
* 创建人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String createBy;
/**
* 更新时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date updateTime;
/**
* 更新人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String updateBy;
}

View File

@ -0,0 +1,113 @@
package com.kakarote.crm.entity.PO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kakarote.core.security.converter.SensitiveDataConverter;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.JdbcType;
import java.io.Serializable;
import java.util.Date;
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("wk_crm_swjg")
@ApiModel(value="CrmSwjg对象", description="税务机关")
public class CrmSwjg implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "swjg_id", type = IdType.AUTO)
/**
* 税务机关Id primary key
*/
private Integer swjgId;
/**
* 税务机关名称
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String swjgmc;
/**
* 税务机关代码
*/
private String swjgDm;
/**
* 税务机关简称
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String swjgjc;
/**
* 上级税务机关代码
*/
private String sjswjgDm;
/**
* 机构级次代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String jgjcDm;
/**
* 行政区划数字代码
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String xzqhszDm;
/**
* 选用标志
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String xybz;
/**
* 有效标志
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String yxbz;
/**
* 办税服务厅标志
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String bsfwtbz;
/**
* 客户标志
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String ghbz;
/**
* 创建时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date createTime;
/**
* 创建人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String createBy;
/**
* 更新时间
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private Date updateTime;
/**
* 更新人
*/
@TableField(typeHandler = SensitiveDataConverter.class, jdbcType = JdbcType.VARCHAR)
private String updateBy;
}

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