瀏覽代碼

2025年2月21日17:20:56

纪新园 8 月之前
父節點
當前提交
8cad0d59a9

+ 23 - 2
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/entity/PjCorpsDesc.java

@@ -82,7 +82,6 @@ public class PjCorpsDesc implements Serializable {
 	 * 是否已删除(0 否 1是)
 	 */
 	@ApiModelProperty(value = "是否已删除(0 否 1是)")
-
 	private Integer isDeleted;
 	/**
 	 * 备注
@@ -334,9 +333,31 @@ public class PjCorpsDesc implements Serializable {
 	private String createUserName;
 
 	/**
-	 *创建日期
+	 * 创建日期
 	 */
 	@TableField(exist = false)
 	private List<String> createTimeList;
 
+	/**
+	 * 查询天数
+	 */
+	@TableField(exist = false)
+	private Long days;
+
+	/**
+	 * 排序
+	 */
+	@TableField(exist = false)
+	private Integer sort;
+	/**
+	 * 排序
+	 */
+	@TableField(exist = false)
+	private Date businesDate;
+/**
+	 * 排序
+	 */
+	@TableField(exist = false)
+	private String detailedAddress;
+
 }

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AgentServiceImpl.java

@@ -4031,6 +4031,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				agent.setAmount(amountDr.setScale(2,RoundingMode.HALF_UP));
 				agent.setAmountUsd(amountDrUsd.setScale(2,RoundingMode.HALF_UP));
 				agent.setEquivalentToRmbDr(equivalentToRmbDr.setScale(2,RoundingMode.HALF_UP));
+				agent.setAmountLoc(agent.getAmount().add(agent.getEquivalentToRmbDr()));
 				List<BCorpsBank> bCorpsBanks = bCorpsBankService.list(new LambdaQueryWrapper<BCorpsBank>()
 					.eq(BCorpsBank::getTenantId, AuthUtil.getTenantId())
 					.eq(BCorpsBank::getIsDeleted, 0)
@@ -4169,6 +4170,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				agent.setAmount(amountCr.setScale(2,RoundingMode.HALF_UP));
 				agent.setAmountUsd(amountCrUsd.setScale(2,RoundingMode.HALF_UP));
 				agent.setEquivalentToRmbCr(equivalentToRmbCr.setScale(2,RoundingMode.HALF_UP));
+				agent.setAmountLoc(agent.getAmount().add(agent.getEquivalentToRmbCr()));
 				agent.setDept(dept);
 				map.put(MagicValues.DATA, agent);
 			} else {

+ 19 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsStatisticsController.java

@@ -22,6 +22,7 @@ import org.springblade.salesPart.excel.PjCorpsDescGYSExportExcel;
 import org.springblade.salesPart.order.service.IOrderService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
@@ -196,4 +197,22 @@ public class CorpsStatisticsController {
 		}
 	}
 
+	/**
+	 * app客户分析
+	 */
+	@GetMapping("/appCustomerAnalysis")
+	public R<IPage<PjCorpsDesc>> appCustomerAnalysis(PjCorpsDesc corpsDescDto, Query query) {
+		IPage<PjCorpsDesc> pages = corpsDescService.appCustomerAnalysis(Condition.getPage(query), corpsDescDto);
+		return R.data(pages);
+	}
+
+	/**
+	 * app客户分析
+	 */
+	@GetMapping("/appCustomerAnalysisDetail")
+	public R<PjCorpsDesc> appCustomerAnalysisDetail(@RequestParam("id") Long id ) {
+		PjCorpsDesc pages = corpsDescService.appCustomerAnalysisDetail(id);
+		return R.data(pages);
+	}
+
 }

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.java

@@ -82,4 +82,6 @@ public interface CorpsDescMapper extends BaseMapper<PjCorpsDesc> {
 
 	@TenantIgnore
 	int insertCorps(PjCorpsDesc corpsDesc);
+
+	List<PjCorpsDesc> appCustomerAnalysis(IPage<PjCorpsDesc> page, @Param("CorpsDesc") PjCorpsDesc corpsDescDto);
 }

+ 54 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/mapper/CorpsDescMapper.xml

@@ -344,4 +344,58 @@
           and cname = #{deptName}
           and tenant_id = #{tenantId}
     </select>
+    <select id="appCustomerAnalysis" resultType="org.springblade.salesPart.entity.PjCorpsDesc">
+        SELECT
+            pcd.*,
+        (
+        SELECT
+        busines_date
+        FROM
+        pjpf_order
+        WHERE
+        tenant_id = '883868'
+        AND is_deleted = '0'
+        AND bs_type = 'XS'
+        AND FIND_IN_SET( `status`, '已发货,已收货' )
+        and customer_id = pcd.id
+        ORDER BY
+        busines_date DESC
+        LIMIT 1
+        ) as businesDate,
+        pca.detailed_address as detailed_Address
+        FROM
+            pjpf_corps_desc pcd
+        LEFT JOIN pjpf_corps_addr pca on pcd.id = pca.pid and  pca.default_addres = '1'
+        LEFT JOIN (
+                SELECT
+                    customer_id
+                FROM
+                    pjpf_order po
+                WHERE
+                    po.busines_date >= CURDATE() - INTERVAL #{CorpsDesc.days} DAY
+                  AND po.tenant_id = #{CorpsDesc.tenantId}
+                  AND po.is_deleted = '0'
+                  AND po.bs_type = 'XS'
+                  AND FIND_IN_SET( po.`status`, '已发货,已收货' )
+            ) o ON pcd.id = o.customer_id
+        WHERE
+            o.customer_id IS NULL
+          AND pcd.corp_type = 'KH'
+          AND pcd.tenant_id = #{CorpsDesc.tenantId}
+          AND pcd.is_deleted = '0'
+        AND pca.tenant_id = #{CorpsDesc.tenantId}
+        AND pca.is_deleted = '0'
+        <if test="CorpsDesc.cname !=null and CorpsDesc.cname != ''">
+            and pcd.cname like CONCAT(CONCAT('%', #{CorpsDesc.cname}), '%')
+        </if>
+        <if test="CorpsDesc.sort !=null and CorpsDesc.sort == 1">
+            ORDER BY pcd.salesman_id
+        </if>
+        <if test="CorpsDesc.sort !=null and CorpsDesc.sort == 2">
+            ORDER BY pcd.cname
+        </if>
+        <if test="CorpsDesc.sort !=null and CorpsDesc.sort == 3">
+            ORDER BY pca.detailed_address
+        </if>
+    </select>
 </mapper>

+ 5 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/ICorpsDescService.java

@@ -28,6 +28,7 @@ import org.springblade.salesPart.excel.SupplierImportExcel;
 import org.springblade.salesPart.vo.CorpsDescVO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  *  配件批发客户服务类
@@ -125,4 +126,8 @@ public interface ICorpsDescService extends IService<PjCorpsDesc> {
 	R importBrand(List<CorpsImportBrandExcel> excelList);
 
     List<PjCorpsDesc> selectCorpList(String tenantId);
+
+	IPage<PjCorpsDesc> appCustomerAnalysis(IPage<PjCorpsDesc> page, PjCorpsDesc corpsDescDto);
+
+	PjCorpsDesc appCustomerAnalysisDetail(Long id);
 }

+ 229 - 207
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/service/impl/CorpsDescServiceImpl.java

@@ -39,8 +39,6 @@ import org.springblade.salesPart.excel.CorpsDescImportExcel;
 import org.springblade.salesPart.excel.CorpsImportBrandExcel;
 import org.springblade.salesPart.excel.SupplierImportExcel;
 import org.springblade.salesPart.order.mapper.OrderMapper;
-import org.springblade.salesPart.settlement.mapper.SettlementMapper;
-import org.springblade.salesPart.ship.mapper.ShipMapper;
 import org.springblade.salesPart.storage.service.IStorageDescService;
 import org.springblade.salesPart.vo.CorpsDescVO;
 import org.springblade.system.entity.Dept;
@@ -83,11 +81,6 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 
 	private final OrderMapper orderMapper;
 
-	private final ShipMapper shipMapper;
-
-	private final SettlementMapper settlementMapper;
-
-
 	static final int GB_SP_DIFF = 160;
 	// 存放国标一级汉字不同读音的起始区位码
 	static final int[] secPosValueList = {1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212, 3472, 3635,
@@ -307,219 +300,219 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 	@Transactional(rollbackFor = Exception.class)
 	public R importUser(List<CorpsDescImportExcel> data) {
 //		try {
-			if (CollectionUtils.isEmpty(data)) {
-				throw new SecurityException("导入数据不能为空");
-			}
-			List<Boolean> countList = new ArrayList<>();
-			List<String> typeList = data.stream().map(CorpsDescImportExcel::getType).filter(Objects::nonNull).distinct().collect(Collectors.toList());
-			String type = String.join(",", typeList);
-			List<PjCorpsType> pjCorpsTypeList = corpsTypeMapper.selectList(new LambdaQueryWrapper<PjCorpsType>()
-				.eq(PjCorpsType::getTenantId, AuthUtil.getTenantId())
-				.eq(PjCorpsType::getIsDeleted, 0)
-				.eq(PjCorpsType::getSalesCompanyId, Long.parseLong(AuthUtil.getDeptId()))
-				.apply("find_in_set(cname,'" + type + "')")
-			);
-			if (typeList.isEmpty()) {
-				throw new RuntimeException("分类不能为空");
-			}
-			if (pjCorpsTypeList.isEmpty()) {
-				throw new RuntimeException("分类不能为空");
-			}
-			if (pjCorpsTypeList.size() < typeList.size()) {
-				throw new RuntimeException("导入中的数据,分类字段不存在或者未填分类字段");
-			}
-			List<User> user = userClient.getUserByRole();
-			if (user.isEmpty()) {
-				throw new RuntimeException("未查到业务员信息");
-			}
-			//获得所属公司
-			Long salesCompanyId;
-			String salesCompanyName;
-			String appletsId;
-			R<Dept> dept = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId()));
-			if (ObjectUtil.isNotEmpty(dept)) {
-				salesCompanyId = dept.getData().getId();
-				salesCompanyName = dept.getData().getFullName();
-				appletsId = dept.getData().getAppletsId();
-			} else {
-				throw new SecurityException("数据异常请联系管理员");
-			}
-			String deliveryWarehouse = data.stream().map(CorpsDescImportExcel::getDeliveryWarehouseName).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
-			List<PjStorageDesc> storageDescList = storageDescService.list(new LambdaQueryWrapper<PjStorageDesc>()
-				.eq(PjStorageDesc::getTenantId, AuthUtil.getTenantId())
-				.eq(PjStorageDesc::getIsDeleted, 0)
-				.apply("find_in_set(cname,'" + deliveryWarehouse + "')"));
-			if (storageDescList.isEmpty()) {
-				throw new RuntimeException("未查到仓库信息");
-			}
-			String brandName = data.stream().map(CorpsDescImportExcel::getBrandName).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
-			List<PjBrandDesc> pjBrandDescList = brandDescService.list(new LambdaQueryWrapper<PjBrandDesc>()
-				.eq(PjBrandDesc::getTenantId, AuthUtil.getTenantId())
-				.eq(PjBrandDesc::getIsDeleted, 0)
-				.apply("find_in_set(cname,'" + brandName + "')"));
-			R<String> r = sysClient.getRoleIds(AuthUtil.getTenantId(), "客户");
-			for (CorpsDescImportExcel e : data) {
-				PjCorpsType corpsType = pjCorpsTypeList.stream().filter(item -> item.getCname().equals(e.getType())).findFirst().orElse(null);
-				if (corpsType != null) {
-					countList.add(true);
-					PjCorpsDesc corpsDesc = new PjCorpsDesc();
-					corpsDesc.setCname(e.getCname());
-					corpsDesc.setTel(e.getTel());
-					corpsDesc.setTenantId(AuthUtil.getTenantId());
-					corpsDesc.setPriceSystem(e.getPriceSystem());
-					corpsDesc.setAccountPeriod(e.getAccountPeriod());
-					//获得业务员
-					if (StringUtils.isNotBlank(e.getSalesmanName())) {
-						User user1 = user.stream().filter(item -> item.getRealName().equals(e.getSalesmanName())).findFirst().orElse(null);
-						if (user1 != null) {
-							corpsDesc.setSalesmanId(user1.getId());
-							corpsDesc.setSalesmanName(user1.getRealName());
-						} else {
-							throw new SecurityException("请输入正确的业务员");
-						}
+		if (CollectionUtils.isEmpty(data)) {
+			throw new SecurityException("导入数据不能为空");
+		}
+		List<Boolean> countList = new ArrayList<>();
+		List<String> typeList = data.stream().map(CorpsDescImportExcel::getType).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+		String type = String.join(",", typeList);
+		List<PjCorpsType> pjCorpsTypeList = corpsTypeMapper.selectList(new LambdaQueryWrapper<PjCorpsType>()
+			.eq(PjCorpsType::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsType::getIsDeleted, 0)
+			.eq(PjCorpsType::getSalesCompanyId, Long.parseLong(AuthUtil.getDeptId()))
+			.apply("find_in_set(cname,'" + type + "')")
+		);
+		if (typeList.isEmpty()) {
+			throw new RuntimeException("分类不能为空");
+		}
+		if (pjCorpsTypeList.isEmpty()) {
+			throw new RuntimeException("分类不能为空");
+		}
+		if (pjCorpsTypeList.size() < typeList.size()) {
+			throw new RuntimeException("导入中的数据,分类字段不存在或者未填分类字段");
+		}
+		List<User> user = userClient.getUserByRole();
+		if (user.isEmpty()) {
+			throw new RuntimeException("未查到业务员信息");
+		}
+		//获得所属公司
+		Long salesCompanyId;
+		String salesCompanyName;
+		String appletsId;
+		R<Dept> dept = sysClient.getDept(Long.valueOf(AuthUtil.getDeptId()));
+		if (ObjectUtil.isNotEmpty(dept)) {
+			salesCompanyId = dept.getData().getId();
+			salesCompanyName = dept.getData().getFullName();
+			appletsId = dept.getData().getAppletsId();
+		} else {
+			throw new SecurityException("数据异常请联系管理员");
+		}
+		String deliveryWarehouse = data.stream().map(CorpsDescImportExcel::getDeliveryWarehouseName).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
+		List<PjStorageDesc> storageDescList = storageDescService.list(new LambdaQueryWrapper<PjStorageDesc>()
+			.eq(PjStorageDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjStorageDesc::getIsDeleted, 0)
+			.apply("find_in_set(cname,'" + deliveryWarehouse + "')"));
+		if (storageDescList.isEmpty()) {
+			throw new RuntimeException("未查到仓库信息");
+		}
+		String brandName = data.stream().map(CorpsDescImportExcel::getBrandName).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
+		List<PjBrandDesc> pjBrandDescList = brandDescService.list(new LambdaQueryWrapper<PjBrandDesc>()
+			.eq(PjBrandDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjBrandDesc::getIsDeleted, 0)
+			.apply("find_in_set(cname,'" + brandName + "')"));
+		R<String> r = sysClient.getRoleIds(AuthUtil.getTenantId(), "客户");
+		for (CorpsDescImportExcel e : data) {
+			PjCorpsType corpsType = pjCorpsTypeList.stream().filter(item -> item.getCname().equals(e.getType())).findFirst().orElse(null);
+			if (corpsType != null) {
+				countList.add(true);
+				PjCorpsDesc corpsDesc = new PjCorpsDesc();
+				corpsDesc.setCname(e.getCname());
+				corpsDesc.setTel(e.getTel());
+				corpsDesc.setTenantId(AuthUtil.getTenantId());
+				corpsDesc.setPriceSystem(e.getPriceSystem());
+				corpsDesc.setAccountPeriod(e.getAccountPeriod());
+				//获得业务员
+				if (StringUtils.isNotBlank(e.getSalesmanName())) {
+					User user1 = user.stream().filter(item -> item.getRealName().equals(e.getSalesmanName())).findFirst().orElse(null);
+					if (user1 != null) {
+						corpsDesc.setSalesmanId(user1.getId());
+						corpsDesc.setSalesmanName(user1.getRealName());
+					} else {
+						throw new SecurityException("请输入正确的业务员");
 					}
-					corpsDesc.setSalesCompanyId(salesCompanyId);
-					corpsDesc.setSalesCompanyName(salesCompanyName);
-					corpsDesc.setCreditLimit(e.getCreditLimit());
-					corpsDesc.setUseCreditLimit(e.getUseCreditLimit());
-
-					//获得仓库
-					if (StringUtils.isNotBlank(e.getDeliveryWarehouseName())) {
-						PjStorageDesc storageDesc = storageDescList.stream().filter(item -> item.getCname().equals(e.getDeliveryWarehouseName())).findFirst().orElse(null);
-						if (storageDesc != null) {
-							corpsDesc.setDeliveryWarehouseId(storageDesc.getId());
-							corpsDesc.setDeliveryWarehouseName(storageDesc.getCname());
-						} else {
-							throw new SecurityException("请输入正确的仓库");
-						}
+				}
+				corpsDesc.setSalesCompanyId(salesCompanyId);
+				corpsDesc.setSalesCompanyName(salesCompanyName);
+				corpsDesc.setCreditLimit(e.getCreditLimit());
+				corpsDesc.setUseCreditLimit(e.getUseCreditLimit());
+
+				//获得仓库
+				if (StringUtils.isNotBlank(e.getDeliveryWarehouseName())) {
+					PjStorageDesc storageDesc = storageDescList.stream().filter(item -> item.getCname().equals(e.getDeliveryWarehouseName())).findFirst().orElse(null);
+					if (storageDesc != null) {
+						corpsDesc.setDeliveryWarehouseId(storageDesc.getId());
+						corpsDesc.setDeliveryWarehouseName(storageDesc.getCname());
+					} else {
+						throw new SecurityException("请输入正确的仓库");
 					}
+				}
 
-					corpsDesc.setCorpsTypeId(String.valueOf(corpsType.getId()));
-					corpsDesc.setCorpType("KH");
-					if (ObjectUtils.isNotNull(e.getBrandName())){
-						List<String> list = Arrays.asList(e.getBrandName().split(","));
-						if (!pjBrandDescList.isEmpty()) {
-							List<PjBrandDesc> pjBrandDescs = pjBrandDescList.stream().filter(item -> list.contains(item.getCname())).distinct().collect(Collectors.toList());
-							if (!pjBrandDescs.isEmpty()) {
-								corpsDesc.setBrandName(pjBrandDescList.stream().map(PjBrandDesc::getCname).distinct().collect(Collectors.joining(",")));
-								StringBuilder brandIds = new StringBuilder();
-								for (PjBrandDesc item : pjBrandDescList) {
-									brandIds.append(item.getId()).append(",");
-								}
-								if (ObjectUtils.isNotNull(brandIds.toString())) {
-									corpsDesc.setBrandId(brandIds.substring(0, brandIds.length() - 1));
-								}
-								corpsDesc.setBrandName(pjBrandDescList.stream().map(PjBrandDesc::getCname).distinct().collect(Collectors.joining(",")));
+				corpsDesc.setCorpsTypeId(String.valueOf(corpsType.getId()));
+				corpsDesc.setCorpType("KH");
+				if (ObjectUtils.isNotNull(e.getBrandName())) {
+					List<String> list = Arrays.asList(e.getBrandName().split(","));
+					if (!pjBrandDescList.isEmpty()) {
+						List<PjBrandDesc> pjBrandDescs = pjBrandDescList.stream().filter(item -> list.contains(item.getCname())).distinct().collect(Collectors.toList());
+						if (!pjBrandDescs.isEmpty()) {
+							corpsDesc.setBrandName(pjBrandDescList.stream().map(PjBrandDesc::getCname).distinct().collect(Collectors.joining(",")));
+							StringBuilder brandIds = new StringBuilder();
+							for (PjBrandDesc item : pjBrandDescList) {
+								brandIds.append(item.getId()).append(",");
+							}
+							if (ObjectUtils.isNotNull(brandIds.toString())) {
+								corpsDesc.setBrandId(brandIds.substring(0, brandIds.length() - 1));
 							}
+							corpsDesc.setBrandName(pjBrandDescList.stream().map(PjBrandDesc::getCname).distinct().collect(Collectors.joining(",")));
 						}
 					}
-					//名称相等视为重复数据
-					LambdaQueryWrapper<PjCorpsDesc> queryWrapper = new LambdaQueryWrapper<>();
-					queryWrapper.eq(PjCorpsDesc::getCname, corpsDesc.getCname());
-					queryWrapper.like(PjCorpsDesc::getCorpType, "KH");
-					queryWrapper.eq(PjCorpsDesc::getIsDeleted, 0);
-					PjCorpsDesc selectOne = baseMapper.selectOne(queryWrapper);
-					if (selectOne == null) {
-						corpsDesc.setCreateTime(new Date());
-						corpsDesc.setCreateUser(AuthUtil.getUserId());
-						corpsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-						corpsDesc.setCheckStatus("通过");
-						baseMapper.insert(corpsDesc);
-						PjCorpsTypeDesc middle = new PjCorpsTypeDesc();
-						middle.setCorpId(corpsDesc.getId());
-						middle.setCorpTypeId(corpsType.getId());
-						middle.setCreateTime(new Date());
-						middle.setTenantId(AuthUtil.getTenantId());
-						middle.setCreateUser(AuthUtil.getUserId());
-						middle.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
-						corpsTypeDescMapper.insert(middle);
-						if (ObjectUtils.isNotNull(corpsDesc.getTel())){
-							User userData = userClient.loginByAccount("", corpsDesc.getTel(), "4", AuthUtil.getTenantId(), appletsId);
-							if (ObjectUtils.isNull(userData)) {
-								//用户不存在,注册用户
-								User saveUser = new User();
-								saveUser.setAppletsId(appletsId);
-								saveUser.setTenantId(AuthUtil.getTenantId());
-								saveUser.setAccount(corpsDesc.getTel());
-								saveUser.setName(corpsDesc.getTel());
-								saveUser.setRealName(corpsDesc.getTel());
-								saveUser.setUserType(4);
-								saveUser.setPhone(corpsDesc.getTel());
-								saveUser.setDeptId(AuthUtil.getDeptId());
-								//获取注册用户类型
-								if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
-									saveUser.setRoleId(r.getData());
-								} else {
-									saveUser.setRoleId("");
-								}
-								saveUser.setPassword("123456");
-								R<Boolean> result = userClient.saveUser(saveUser);
-								if (!result.isSuccess()) {
-									throw new RuntimeException(result.getMsg());
-								}
-								R<UserInfo> resu = userClient.userInfo(AuthUtil.getTenantId(), corpsDesc.getTel(), UserEnum.WECHAT.getName());
-								if (resu.isSuccess()) {
-									userData = resu.getData().getUser();
-								} else {
-									throw new RuntimeException("创建用户失败");
-								}
+				}
+				//名称相等视为重复数据
+				LambdaQueryWrapper<PjCorpsDesc> queryWrapper = new LambdaQueryWrapper<>();
+				queryWrapper.eq(PjCorpsDesc::getCname, corpsDesc.getCname());
+				queryWrapper.like(PjCorpsDesc::getCorpType, "KH");
+				queryWrapper.eq(PjCorpsDesc::getIsDeleted, 0);
+				PjCorpsDesc selectOne = baseMapper.selectOne(queryWrapper);
+				if (selectOne == null) {
+					corpsDesc.setCreateTime(new Date());
+					corpsDesc.setCreateUser(AuthUtil.getUserId());
+					corpsDesc.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+					corpsDesc.setCheckStatus("通过");
+					baseMapper.insert(corpsDesc);
+					PjCorpsTypeDesc middle = new PjCorpsTypeDesc();
+					middle.setCorpId(corpsDesc.getId());
+					middle.setCorpTypeId(corpsType.getId());
+					middle.setCreateTime(new Date());
+					middle.setTenantId(AuthUtil.getTenantId());
+					middle.setCreateUser(AuthUtil.getUserId());
+					middle.setCreateDept(Long.valueOf(AuthUtil.getDeptId()));
+					corpsTypeDescMapper.insert(middle);
+					if (ObjectUtils.isNotNull(corpsDesc.getTel())) {
+						User userData = userClient.loginByAccount("", corpsDesc.getTel(), "4", AuthUtil.getTenantId(), appletsId);
+						if (ObjectUtils.isNull(userData)) {
+							//用户不存在,注册用户
+							User saveUser = new User();
+							saveUser.setAppletsId(appletsId);
+							saveUser.setTenantId(AuthUtil.getTenantId());
+							saveUser.setAccount(corpsDesc.getTel());
+							saveUser.setName(corpsDesc.getTel());
+							saveUser.setRealName(corpsDesc.getTel());
+							saveUser.setUserType(4);
+							saveUser.setPhone(corpsDesc.getTel());
+							saveUser.setDeptId(AuthUtil.getDeptId());
+							//获取注册用户类型
+							if (r.isSuccess() && ObjectUtils.isNotNull(r.getData())) {
+								saveUser.setRoleId(r.getData());
+							} else {
+								saveUser.setRoleId("");
 							}
-							//保存客户联系人信息
-							PjCorpsAttn corpsAttn = new PjCorpsAttn();
-							if (ObjectUtils.isNotNull(userData)) {
-								long count = corpsAttnService.count(new LambdaQueryWrapper<PjCorpsAttn>()
-									.eq(PjCorpsAttn::getUserId, userData.getId())
-									.eq(PjCorpsAttn::getTel, corpsDesc.getTel())
-									.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
-									.eq(PjCorpsAttn::getIsDeleted, 0));
-								if (count > 0) {
-									throw new RuntimeException("手机号已存在,提交失败");
-								}
-								corpsAttn.setUserId(userData.getId());
+							saveUser.setPassword("123456");
+							R<Boolean> result = userClient.saveUser(saveUser);
+							if (!result.isSuccess()) {
+								throw new RuntimeException(result.getMsg());
+							}
+							R<UserInfo> resu = userClient.userInfo(AuthUtil.getTenantId(), corpsDesc.getTel(), UserEnum.WECHAT.getName());
+							if (resu.isSuccess()) {
+								userData = resu.getData().getUser();
+							} else {
+								throw new RuntimeException("创建用户失败");
 							}
-							corpsAttn.setCname(e.getContacts());
-							corpsAttn.setTel(e.getTel());
-							corpsAttn.setTenantId(AuthUtil.getTenantId());
-							corpsAttn.setPid(corpsDesc.getId());
-							corpsAttn.setCreateTime(new Date());
-							corpsAttn.setTenantId(AuthUtil.getTenantId());
-							corpsAttn.setCreateUser(AuthUtil.getUserId());
-							corpsAttn.setSalesCompanyId(salesCompanyId);
-							corpsAttn.setSalesCompanyName(salesCompanyName);
-							corpsAttnService.save(corpsAttn);
-
-							//保存客户地址信息
-							PjCorpsAddr corpsAddr = new PjCorpsAddr();
-							corpsAddr.setContacts(e.getContacts());
-							corpsAddr.setTel(e.getTel());
-							corpsAddr.setBelongtoarea(e.getAddress());
-							corpsAddr.setDetailedAddress(e.getAddress());
-							corpsAddr.setTenantId(AuthUtil.getTenantId());
-							corpsAddr.setPid(corpsDesc.getId());
-							corpsAddr.setCreateTime(new Date());
-							corpsAddr.setTenantId(AuthUtil.getTenantId());
-							corpsAddr.setCreateUser(AuthUtil.getUserId());
-							corpsAddr.setDefaultAddres("1");
-							corpsAddrService.save(corpsAddr);
 						}
-					} else {
-						corpsDesc.setId(selectOne.getId());
-						corpsDesc.setUpdateTime(new Date());
-						corpsDesc.setUpdateUser(AuthUtil.getUserId());
-						baseMapper.updateById(corpsDesc);
+						//保存客户联系人信息
+						PjCorpsAttn corpsAttn = new PjCorpsAttn();
+						if (ObjectUtils.isNotNull(userData)) {
+							long count = corpsAttnService.count(new LambdaQueryWrapper<PjCorpsAttn>()
+								.eq(PjCorpsAttn::getUserId, userData.getId())
+								.eq(PjCorpsAttn::getTel, corpsDesc.getTel())
+								.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+								.eq(PjCorpsAttn::getIsDeleted, 0));
+							if (count > 0) {
+								throw new RuntimeException("手机号已存在,提交失败");
+							}
+							corpsAttn.setUserId(userData.getId());
+						}
+						corpsAttn.setCname(e.getContacts());
+						corpsAttn.setTel(e.getTel());
+						corpsAttn.setTenantId(AuthUtil.getTenantId());
+						corpsAttn.setPid(corpsDesc.getId());
+						corpsAttn.setCreateTime(new Date());
+						corpsAttn.setTenantId(AuthUtil.getTenantId());
+						corpsAttn.setCreateUser(AuthUtil.getUserId());
+						corpsAttn.setSalesCompanyId(salesCompanyId);
+						corpsAttn.setSalesCompanyName(salesCompanyName);
+						corpsAttnService.save(corpsAttn);
+
+						//保存客户地址信息
+						PjCorpsAddr corpsAddr = new PjCorpsAddr();
+						corpsAddr.setContacts(e.getContacts());
+						corpsAddr.setTel(e.getTel());
+						corpsAddr.setBelongtoarea(e.getAddress());
+						corpsAddr.setDetailedAddress(e.getAddress());
+						corpsAddr.setTenantId(AuthUtil.getTenantId());
+						corpsAddr.setPid(corpsDesc.getId());
+						corpsAddr.setCreateTime(new Date());
+						corpsAddr.setTenantId(AuthUtil.getTenantId());
+						corpsAddr.setCreateUser(AuthUtil.getUserId());
+						corpsAddr.setDefaultAddres("1");
+						corpsAddrService.save(corpsAddr);
 					}
 				} else {
-					countList.add(false);
+					corpsDesc.setId(selectOne.getId());
+					corpsDesc.setUpdateTime(new Date());
+					corpsDesc.setUpdateUser(AuthUtil.getUserId());
+					baseMapper.updateById(corpsDesc);
 				}
-			}
-			List<Boolean> booleanList = countList.stream().filter(e -> e).collect(Collectors.toList());
-			if (data.size() > booleanList.size()) {
-				return R.fail("导入中的数据,分类字段不存在或者未填分类字段");
-			} else if (data.size() == booleanList.size()) {
-				return R.success("导入成功");
 			} else {
-				throw new SecurityException("导入失败,请仔细检查导入数据");
+				countList.add(false);
 			}
+		}
+		List<Boolean> booleanList = countList.stream().filter(e -> e).collect(Collectors.toList());
+		if (data.size() > booleanList.size()) {
+			return R.fail("导入中的数据,分类字段不存在或者未填分类字段");
+		} else if (data.size() == booleanList.size()) {
+			return R.success("导入成功");
+		} else {
+			throw new SecurityException("导入失败,请仔细检查导入数据");
+		}
 
 		/*} catch (Exception exception) {
 			throw new SecurityException("请检查导入数据" + exception.getMessage());
@@ -610,7 +603,7 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 							.eq(PjCorpsAttn::getIsDeleted, 0);
 						PjCorpsAttn corpsAttn = corpsAttnService.getOne(corpsAttnLambdaQueryWrapper);
 						if (corpsAttn == null) {
-							if (ObjectUtils.isNotNull(e.getAttnCname())){
+							if (ObjectUtils.isNotNull(e.getAttnCname())) {
 								corpsAttn = new PjCorpsAttn();
 								corpsAttn.setPid(corpsDesc.getId());
 								corpsAttn.setCname(e.getAttnCname());
@@ -1200,6 +1193,35 @@ public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDe
 		return baseMapper.selectCorpList(tenantId);
 	}
 
+	@Override
+	public IPage<PjCorpsDesc> appCustomerAnalysis(IPage<PjCorpsDesc> page, PjCorpsDesc corpsDescDto) {
+		List<PjCorpsDesc> corpsDescList = baseMapper.appCustomerAnalysis(page, corpsDescDto);
+		Date date = new Date();
+		for (PjCorpsDesc item : corpsDescList) {
+			if (ObjectUtils.isNotNull(item.getBusinesDate())) {
+				long msNum = date.getTime() - item.getBusinesDate().getTime();
+				long dayNum = msNum / (24 * 60 * 60 * 1000);
+				item.setDays(dayNum);
+			}
+		}
+		return page.setRecords(corpsDescList);
+	}
+
+	@Override
+	public PjCorpsDesc appCustomerAnalysisDetail(Long id) {
+		PjCorpsDesc corpsDesc = baseMapper.selectById(id);
+		List<PjCorpsAttn> corpsAttnList = corpsAttnService.list(new LambdaQueryWrapper<PjCorpsAttn>()
+			.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsAttn::getIsDeleted, 0)
+			.eq(PjCorpsAttn::getPid, id));
+		if (!corpsAttnList.isEmpty()) {
+			List<PjCorpsAttn> attnList = corpsAttnList.stream().filter(e -> e.getPid().equals(id))
+				.collect(Collectors.toList());
+			corpsDesc.setCorpsAttnList(attnList.isEmpty() ? new ArrayList<>() : attnList);
+		}
+		return corpsDesc;
+	}
+
 	/**
 	 * 小程序新增或修改 客户详情
 	 *