Browse Source

经销商门店相关接口,以及理赔,销售线索接口调试

纪新园 1 month ago
parent
commit
bff1e1187f
14 changed files with 1555 additions and 50 deletions
  1. 1 1
      blade-service-api/gubersail-dealer-admin-api/src/main/java/com/gubersail/dealer/admin/api/claim/entity/BladeClaim.java
  2. 0 1
      blade-service-api/gubersail-dealer-admin-api/src/main/java/com/gubersail/dealer/admin/api/corps/entity/PjCorpsDesc.java
  3. 1 1
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/GubersailDealerAdminApplication.java
  4. 6 5
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/claim/controller/BladeClaimController.java
  5. 21 5
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/claim/service/impl/BladeClaimServiceImpl.java
  6. 395 10
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/corp/controller/CorpsDescController.java
  7. 52 0
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/corp/service/ICorpsDescService.java
  8. 9 0
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/corp/service/ICorpsTypeDescService.java
  9. 921 1
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/corp/service/impl/CorpsDescServiceImpl.java
  10. 7 0
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/corp/service/impl/CorpsTypeDescServiceImpl.java
  11. 21 23
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/lead/controller/BladeSalesLeadController.java
  12. 15 3
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/lead/service/impl/BladeSalesLeadServiceImpl.java
  13. 55 0
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/wrapper/ClaimWrapper.java
  14. 51 0
      blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/wrapper/SalesLeadWrapper.java

+ 1 - 1
blade-service-api/gubersail-dealer-admin-api/src/main/java/com/gubersail/dealer/admin/api/claim/entity/BladeClaim.java

@@ -57,7 +57,7 @@ public class BladeClaim implements Serializable {
 	 * 来源类型 1经销商 2门店 3终端消费者
 	 */
 	@ApiModelProperty(value = "来源类型 1经销商 2门店 3终端消费者")
-	private Boolean claimSourceType;
+	private Integer claimSourceType;
 	/**
 	 * 来源方主键ID(逻辑外键)
 	 */

+ 0 - 1
blade-service-api/gubersail-dealer-admin-api/src/main/java/com/gubersail/dealer/admin/api/corps/entity/PjCorpsDesc.java

@@ -31,7 +31,6 @@ public class PjCorpsDesc implements Serializable {
 	 */
 	@ApiModelProperty(value = "租户id")
 	private String tenantId = AuthUtil.getTenantId();
-	;
 	/**
 	 * 创建人
 	 */

+ 1 - 1
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/GubersailDealerAdminApplication.java

@@ -11,7 +11,7 @@ import org.springframework.context.annotation.ComponentScan;
  */
 @EnableBladeFeign
 @SpringCloudApplication
-@ComponentScan(value = {"com.gubersail.admin"})
+@ComponentScan(value = {"com.gubersail.admin", "org.springblade.common.**"})
 @MapperScan({"com.gubersail.admin.**.mapper"})
 public class GubersailDealerAdminApplication {
 

+ 6 - 5
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/claim/controller/BladeClaimController.java

@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.gubersail.admin.claim.service.IBladeClaimService;
+import com.gubersail.admin.wrapper.ClaimWrapper;
 import com.gubersail.dealer.admin.api.claim.entity.BladeClaim;
 import com.gubersail.dealer.admin.api.claim.vo.BladeClaimVO;
 import io.swagger.annotations.Api;
@@ -91,19 +92,19 @@ public class BladeClaimController extends BladeController {
 			.like(ObjectUtils.isNotNull(bladeClaim.getTyreSpecs()), BladeClaim::getTyreSpecs, bladeClaim.getTyreSpecs())
 			.orderByDesc(BladeClaim::getSubmitTime);
 		IPage<BladeClaim> pages = bladeClaimService.page(Condition.getPage(query), lambdaQueryWrapper);
-		//查询数据返回实体转换
 		IPage<BladeClaimVO> voPage = new Page<>();
-		BeanUtil.copyProperties(pages, voPage);
-		if (!voPage.getRecords().isEmpty()) {
+		if (!pages.getRecords().isEmpty()) {
+			//查询数据返回实体转换
+			voPage = ClaimWrapper.build().pageVO(pages);
 			//获取返回数据创建人,修改人id
 			List<Long> userIdList = new ArrayList<>();
-			List<Long> createUserList = voPage.getRecords().stream().map(BladeClaim::getCreateUser).filter(Objects::nonNull)
+			List<Long> createUserList = pages.getRecords().stream().map(BladeClaim::getCreateUser).filter(Objects::nonNull)
 				.distinct().collect(Collectors.toList());
 			//创建人id
 			if (!createUserList.isEmpty()){
 				userIdList.addAll(createUserList);
 			}
-			List<Long> updateUserList = voPage.getRecords().stream().map(BladeClaim::getUpdateUser).filter(Objects::nonNull)
+			List<Long> updateUserList = pages.getRecords().stream().map(BladeClaim::getUpdateUser).filter(Objects::nonNull)
 				.distinct().collect(Collectors.toList());
 			//修改人id
 			if (!updateUserList.isEmpty()){

+ 21 - 5
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/claim/service/impl/BladeClaimServiceImpl.java

@@ -25,6 +25,7 @@ import com.gubersail.admin.claim.service.IBladeClaimAttachmentService;
 import com.gubersail.admin.claim.service.IBladeClaimAuditService;
 import com.gubersail.admin.claim.service.IBladeClaimService;
 import com.gubersail.admin.util.BillCodeUtil;
+import com.gubersail.admin.wrapper.ClaimWrapper;
 import com.gubersail.dealer.admin.api.claim.entity.BladeClaim;
 import com.gubersail.dealer.admin.api.claim.entity.BladeClaimAttachment;
 import com.gubersail.dealer.admin.api.claim.entity.BladeClaimAudit;
@@ -32,8 +33,11 @@ import com.gubersail.dealer.admin.api.claim.vo.BladeClaimVO;
 import lombok.AllArgsConstructor;
 import org.springblade.common.enums.NumberEnum;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -59,7 +63,9 @@ public class BladeClaimServiceImpl extends ServiceImpl<BladeClaimMapper, BladeCl
 
 	private final IBladeClaimAuditService bladeClaimAuditService;
 
-	@Override
+	private final IUserClient userClient;
+
+    @Override
 	public IPage<BladeClaimVO> selectBladeClaimPage(IPage<BladeClaimVO> page, BladeClaimVO bladeClaim) {
 		return page.setRecords(baseMapper.selectBladeClaimPage(page, bladeClaim));
 	}
@@ -72,13 +78,16 @@ public class BladeClaimServiceImpl extends ServiceImpl<BladeClaimMapper, BladeCl
 		//判断是否是第一次保存
 		if (claim.getId() == null) {
 			// 获取 流水号
-			String billNo = BillCodeUtil.getBillCodeByType(AuthUtil.getTenantId(), "LP");
+			String billNo = BillCodeUtil.getBillCodeByType(SecureUtil.getTenantId(), "LP");
 			if (!StringUtils.hasText(billNo) || billNo.length() < NumberEnum.FIFTEEN.number) {
 				return R.fail(HttpStatus.INTERNAL_SERVER_ERROR.value(), "生成系统编号失败");
 			}
 			claim.setClaimNo(billNo);
 			claim.setCreateTime(new Date());
 			claim.setCreateUser(AuthUtil.getUserId());
+			if (ObjectUtils.isNull(claim.getSourceId())){
+				claim.setSourceId(0L);
+			}
 		} else {
 			BladeClaim dataSourceClaim = baseMapper.selectOne(new LambdaQueryWrapper<BladeClaim>().select(BladeClaim::getId, BladeClaim::getVersion)
 				.eq(BladeClaim::getId, claim.getId()));
@@ -129,16 +138,23 @@ public class BladeClaimServiceImpl extends ServiceImpl<BladeClaimMapper, BladeCl
 			//批量保存理赔附件数据数据
 			bladeClaimAttachmentService.saveOrUpdateBatch(bladeClaim.getClaimAttachmentList());
 		}
-		return R.data(bladeClaim);
+		return R.data(claim);
 	}
 
 	@Override
 	public BladeClaimVO detail(BladeClaim bladeClaim) {
-		BladeClaimVO bladeClaimVO = new BladeClaimVO();
 		//通过id查询理赔数据
 		BladeClaim claim = this.getById(bladeClaim.getId());
 		//数据实体类转换
-		BeanUtil.copyProperties(claim, bladeClaimVO);
+		BladeClaimVO bladeClaimVO = ClaimWrapper.build().entityVO(claim);
+		R<User> createUserR = userClient.userInfoById(claim.getCreateUser());
+		if (createUserR.isSuccess() && ObjectUtils.isNotNull(createUserR.getData())){
+			bladeClaimVO.setCreateUserName(createUserR.getData().getRealName());
+		}
+		R<User> updateUserR = userClient.userInfoById(claim.getUpdateUser());
+		if (updateUserR.isSuccess() && ObjectUtils.isNotNull(updateUserR.getData())){
+			bladeClaimVO.setUpdateUserName(updateUserR.getData().getRealName());
+		}
 		//查询理赔附件数据
 		List<BladeClaimAttachment> claimAttachmentList = bladeClaimAttachmentService.list(new LambdaQueryWrapper<BladeClaimAttachment>()
 			.eq(BladeClaimAttachment::getClaimId, claim.getId())

+ 395 - 10
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/corp/controller/CorpsDescController.java

@@ -1,17 +1,49 @@
 package com.gubersail.admin.corp.controller;
 
-import com.gubersail.admin.corp.service.ICorpsDescService;
-import com.gubersail.dealer.admin.api.corps.entity.PjCorpsDesc;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.gubersail.admin.corp.service.*;
+import com.gubersail.admin.order.service.IOrderService;
+import com.gubersail.admin.storage.service.IStorageDescService;
+import com.gubersail.dealer.admin.api.corps.entity.*;
+import com.gubersail.dealer.admin.api.corps.vo.CorpsDescVO;
+import com.gubersail.dealer.admin.api.excel.CorpsDescExportExcel;
+import com.gubersail.dealer.admin.api.excel.CorpsDescImportExcel;
 import com.gubersail.dealer.admin.api.fegin.IBrandClient;
+import com.gubersail.dealer.admin.api.order.entity.PjOrder;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
+import org.springblade.common.annotation.RepeatSubmit;
+import org.springblade.common.enums.CommonEnum;
 import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.math.MathContext;
+import java.util.*;
+import java.util.stream.Collectors;
 
 
 @RestController
@@ -21,14 +53,367 @@ import java.util.List;
 public class CorpsDescController extends BladeController {
 
 	private final ICorpsDescService corpsDescService;
+	private final ICorpsTypeDescService corpsTypeDescService;
+	private final ICorpsTypeService corpsTypeService;
+	private final ICorpsAttnService corpsAttnService;
+	private final ICorpsAddrService corpsAddrService;
+	private final IUserClient userClient;
 
-	private final IBrandClient brandClient;
+	/**
+	 * 详情
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "详情", notes = "传入corpsDesc")
+	public R<CorpsDescVO> detail(PjCorpsDesc corpsDesc) {
+		CorpsDescVO detail = corpsDescService.getMessageByID(corpsDesc);
+		return R.data(detail);
+	}
+
+	/**
+	 * 分页
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入corpsDesc")
+	public R<IPage<CorpsDescVO>> list(CorpsDescVO corpsDesc, Query query) {
+		// 默认查有效的
+		corpsDesc.setIsDeleted(0);
+		corpsDesc.setTenantId(SecureUtil.getTenantId());
+		IPage<CorpsDescVO> pages = corpsDescService.selectCorpsDescPage(Condition.getPage(query), corpsDesc);
+
+		if (CollectionUtils.isNotEmpty(pages.getRecords())) {
+			List<Long> ids = new ArrayList<>();
+			List<Long> corpsIds = new ArrayList<>();
+			for (CorpsDescVO item : pages.getRecords()) {
+				ids.add(item.getDeliveryWarehouseId());
+				corpsIds.add(item.getId());
+			}
+			List<PjCorpsTypeDesc> pjCorpsTypeDescList = corpsTypeDescService.list(new LambdaQueryWrapper<PjCorpsTypeDesc>()
+				.in(PjCorpsTypeDesc::getCorpId, corpsIds));
+			List<PjCorpsType> pjCorpsTypeList = new ArrayList<>();
+			if (!pjCorpsTypeDescList.isEmpty()) {
+				List<Long> typeIdList = pjCorpsTypeDescList.stream().map(PjCorpsTypeDesc::getCorpTypeId).collect(Collectors.toList());
+				if (!typeIdList.isEmpty()) {
+					pjCorpsTypeList = corpsTypeService.list(new LambdaQueryWrapper<PjCorpsType>()
+						.in(PjCorpsType::getId, typeIdList)
+						.eq(PjCorpsType::getIsDeleted, 0));
+				}
+			}
+			for (CorpsDescVO item : pages.getRecords()) {
+				if (!pjCorpsTypeList.isEmpty()) {
+					List<Long> typeIds = pjCorpsTypeDescList.stream()
+						.filter(e -> e.getCorpId().equals(item.getId())).map(PjCorpsTypeDesc::getCorpTypeId)
+						.collect(Collectors.toList());
+					List<PjCorpsType> pjCorpsTypes = pjCorpsTypeList.stream()
+						.filter(e -> e.getCorpType().equals(item.getCorpType()) && typeIds.contains(e.getId()))
+						.collect(Collectors.toList());
+					if (!pjCorpsTypes.isEmpty()) {
+						String typeName = pjCorpsTypes.stream().map(PjCorpsType::getCname).collect(Collectors.joining(","));
+						item.setCorpsTypeName(typeName);
+					}
+				}
+			}
+		}
+		return R.data(pages);
+	}
+
+	/**
+	 * 自定义分页
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "分页", notes = "传入corpsDesc")
+	public R<IPage<PjCorpsDesc>> page(CorpsDescVO corpsDesc, Query query) {
+		LambdaQueryWrapper<PjCorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsDesc::getIsDeleted, 0)
+			.like(PjCorpsDesc::getCname, corpsDesc.getCname())
+			.apply("find_in_set(corp_type,'" + corpsDesc.getCorpType() + "')")
+			.eq(PjCorpsDesc::getSalesCompanyId, AuthUtil.getDeptId());
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			if (AuthUtil.getUserRole().contains("业务员")) {
+				lambdaQueryWrapper.eq(PjCorpsDesc::getSalesmanId, AuthUtil.getUserId());
+			}
+		}
+		IPage<PjCorpsDesc> pages = corpsDescService.page(Condition.getPage(query), lambdaQueryWrapper);
+		return R.data(pages);
+	}
+
+	/**
+	 * 新增
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "新增", notes = "传入corpsDesc")
+	public R save(@Valid @RequestBody PjCorpsDesc corpsDesc) {
+		return R.status(corpsDescService.save(corpsDesc));
+	}
+
+	/**
+	 * 修改 客户详情
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "修改", notes = "传入corpsDesc")
+	@Transactional(rollbackFor = Exception.class)
+	public R update(@Valid @RequestBody PjCorpsDesc corpsDesc) {
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("基础资料")) {
+			throw new RuntimeException("暂无权限,删除失败");
+		}
+		if (corpsDesc.getId() == null) {
+			return R.data(500, "请选择要删除的数据", "error");
+		}
+		List<PjCorpsAttn> corpsAttnList = corpsAttnService.list(new LambdaQueryWrapper<PjCorpsAttn>()
+			.in(PjCorpsAttn::getPid, corpsDesc.getId()));
+		if (!corpsAttnList.isEmpty()) {
+			List<Long> attnIds = corpsAttnList.stream().map(PjCorpsAttn::getId).collect(Collectors.toList());
+			corpsAttnService.removeByIds(attnIds);
+		}
+		List<PjCorpsAddr> corpsAddrList = corpsAddrService.list(new LambdaQueryWrapper<PjCorpsAddr>()
+			.in(PjCorpsAddr::getPid, corpsDesc.getId()));
+		if (!corpsAddrList.isEmpty()) {
+			List<Long> addrIds = corpsAddrList.stream().map(PjCorpsAddr::getId).collect(Collectors.toList());
+			corpsAddrService.removeByIds(addrIds);
+		}
+		//删除客户详情,增加校验
+		PjCorpsDesc desc = corpsDescService.getById(corpsDesc.getId());
+		List<String> typeList = Arrays.stream(desc.getCorpType().split(",")).collect(Collectors.toList());
+		if (typeList.size() <= 1) {
+			corpsDesc.setIsDeleted(1);
+			return R.status(corpsDescService.updateById(corpsDesc));
+		}
+
+		List<Long> typeIdList = corpsTypeService.list(new LambdaQueryWrapper<PjCorpsType>()
+			.eq(PjCorpsType::getCorpType, corpsDesc.getCorpType())
+			.eq(PjCorpsType::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsType::getIsDeleted, 0)
+		).stream().map(PjCorpsType::getId).collect(Collectors.toList());
+
+		corpsTypeDescService.remove(new LambdaQueryWrapper<PjCorpsTypeDesc>()
+			.eq(PjCorpsTypeDesc::getCorpId, corpsDesc.getId())
+			.in(PjCorpsTypeDesc::getCorpTypeId, typeIdList)
+		);
+
+		typeList.remove(corpsDesc.getCorpType());
+		desc.setCorpType(String.join(",", typeList));
+		boolean status = corpsDescService.updateById(corpsDesc);
+		return R.status(status);
+	}
+
+	/**
+	 * 新增或修改
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "新增或修改", notes = "传入corpsDesc")
+	@RepeatSubmit
+	public R submit(@Valid @RequestBody CorpsDescVO corpsDescVO) {
+		if (StringUtils.isNotBlank(corpsDescVO.getTenantId())) {
+			corpsDescVO.setTenantId(SecureUtil.getTenantId());
+		}
+		if (CommonEnum.ADOPT.info.equals(corpsDescVO.getCheckStatus())) {
+			if (Objects.isNull(corpsDescVO.getSalesmanId())) {
+				return R.fail("请为客户维护业务员");
+			}
+			if (Objects.isNull(corpsDescVO.getDeliveryWarehouseId())) {
+				return R.fail("请为客户维护发货仓库");
+			}
+		}
+		return corpsDescService.submit(corpsDescVO);
+	}
 
 
-	@GetMapping("test")
-	public R<List<PjCorpsDesc>> test() {
-		return R.data(brandClient.getCorpList(null));
+	/**
+	 * 删除
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "删除", notes = "传入ids")
+	@Transactional(rollbackFor = Exception.class)
+	@RepeatSubmit
+	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("基础资料")) {
+			throw new RuntimeException("暂无权限,删除失败");
+		}
+		List<Long> list = Func.toLongList(ids);
+		if (!list.isEmpty()) {
+			List<PjCorpsAttn> corpsAttnList = corpsAttnService.list(new LambdaQueryWrapper<PjCorpsAttn>()
+				.in(PjCorpsAttn::getPid, list));
+			if (!corpsAttnList.isEmpty()) {
+				List<Long> attnIds = corpsAttnList.stream().map(PjCorpsAttn::getId).collect(Collectors.toList());
+				corpsAttnService.removeByIds(attnIds);
+			}
+			List<PjCorpsAddr> corpsAddrList = corpsAddrService.list(new LambdaQueryWrapper<PjCorpsAddr>()
+				.in(PjCorpsAddr::getPid, list));
+			if (!corpsAddrList.isEmpty()) {
+				List<Long> addrIds = corpsAddrList.stream().map(PjCorpsAddr::getId).collect(Collectors.toList());
+				corpsAddrService.removeByIds(addrIds);
+			}
+		}
+		return R.status(corpsDescService.removeByIds(list));
 	}
 
+	/**
+	 * 导出客户资料
+	 */
+	@GetMapping("/pjCorpsExport")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "导出客户资料", notes = "传入corpsDesc")
+	public void pjCorpsExport(CorpsDescVO corpsDesc, HttpServletResponse response) {
+		// 默认查有效的
+		corpsDesc.setIsDeleted(0);
+		corpsDesc.setTenantId(SecureUtil.getTenantId());
+		corpsDesc.setSalesCompanyId(Long.valueOf(AuthUtil.getDeptId()));
+		List<CorpsDescVO> list = corpsDescService.selectCorpsDescAll(corpsDesc);
+		List<Long> addId = list.stream().map(CorpsDescVO::getId).collect(Collectors.toList());
+		List<PjCorpsAddr> pjCorpsAddrList = new ArrayList<>();
+		if (!addId.isEmpty()) {
+			pjCorpsAddrList = corpsAddrService.list(new LambdaQueryWrapper<PjCorpsAddr>()
+				.eq(PjCorpsAddr::getTenantId, AuthUtil.getTenantId())
+				.eq(PjCorpsAddr::getIsDeleted, 0)
+				.in(PjCorpsAddr::getPid, addId));
+		}
+		List<Long> corpsIds = new ArrayList<>();
+		String userIds = "";
+		for (CorpsDescVO item : list) {
+			corpsIds.add(item.getId());
+			userIds = userIds + item.getCreateUser()+",";
+		}
+		List<PjCorpsTypeDesc> pjCorpsTypeDescList = corpsTypeDescService.list(new LambdaQueryWrapper<PjCorpsTypeDesc>()
+			.in(PjCorpsTypeDesc::getCorpId, corpsIds));
+		List<PjCorpsType> pjCorpsTypeList = new ArrayList<>();
+		if (!pjCorpsTypeDescList.isEmpty()) {
+			List<Long> typeIdList = pjCorpsTypeDescList.stream().map(PjCorpsTypeDesc::getCorpTypeId).collect(Collectors.toList());
+			if (!typeIdList.isEmpty()) {
+				pjCorpsTypeList = corpsTypeService.list(new LambdaQueryWrapper<PjCorpsType>()
+					.in(PjCorpsType::getId, typeIdList)
+					.eq(PjCorpsType::getIsDeleted, 0));
+			}
+		}
+		if (CollectionUtils.isNotEmpty(list)) {
+			List<PjCorpsAddr> finalPjCorpsAddrList = pjCorpsAddrList;
+			List<PjCorpsType> finalPjCorpsTypeList = pjCorpsTypeList;
+			if (ObjectUtils.isNotNull()){
+				userIds = userIds.substring(0,userIds.length()-1);
+			}
+			List<User> userList = userClient.selectListNotTenantId(AuthUtil.getTenantId(),userIds);
+			list.forEach(item -> {
+				if (!finalPjCorpsTypeList.isEmpty()) {
+					List<Long> typeIds = pjCorpsTypeDescList.stream()
+						.filter(e -> e.getCorpId().equals(item.getId())).map(PjCorpsTypeDesc::getCorpTypeId)
+						.collect(Collectors.toList());
+					List<PjCorpsType> pjCorpsTypes = finalPjCorpsTypeList.stream()
+						.filter(e -> e.getCorpType().equals(item.getCorpType()) && typeIds.contains(e.getId()))
+						.collect(Collectors.toList());
+					if (!pjCorpsTypes.isEmpty()) {
+						String typeName = pjCorpsTypes.stream().map(PjCorpsType::getCname).collect(Collectors.joining(","));
+						item.setCorpsTypeName(typeName);
+					}
+				}
+				List<PjCorpsAddr> pjCorpsAddr = finalPjCorpsAddrList.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+				if (!pjCorpsAddr.isEmpty()) {
+					item.setContacts(pjCorpsAddr.stream().map(PjCorpsAddr::getContacts).collect(Collectors.joining(",")));
+					item.setContactsPhone(pjCorpsAddr.stream().map(PjCorpsAddr::getTel).collect(Collectors.joining(",")));
+					item.setAddress(pjCorpsAddr.stream().map(PjCorpsAddr::getDetailedAddress).collect(Collectors.joining(",")));
+				}
+				if (!userList.isEmpty()) {
+					User user = userList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().orElse(null);
+					if (user != null) {
+						item.setCreateUserName(user.getName());
+					}
+				}
+			});
+		}
+		ExcelUtil.export(response, "客户信息", "客户信息", BeanUtil.copy(list, CorpsDescExportExcel.class), CorpsDescExportExcel.class);
+	}
+
+	/**
+	 * 导入客户资料
+	 */
+	@PostMapping("/corpsImport")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "导入客户资料", notes = "传入corpsDesc")
+	public R corpsImport(@RequestParam("file") MultipartFile file) {
+		List<CorpsDescImportExcel> excelList = ExcelUtil.read(file, CorpsDescImportExcel.class);
+		if (CollectionUtils.isEmpty(excelList)) {
+			throw new SecurityException("数据不能为空");
+		}
+		return corpsDescService.importUser(excelList);
+	}
+
+	/**
+	 * 下载客户模板
+	 */
+	@GetMapping("/corpsExport")
+	@ApiOperationSupport(order = 10)
+	@ApiOperation(value = "下载客户模板")
+	public void corpsExport(HttpServletResponse response) {
+		List<CorpsDescImportExcel> list = new ArrayList<>();
+		System.out.println(response);
+		ExcelUtil.export(response, "导入模板-客户资料", "导入数据表", list, CorpsDescImportExcel.class);
+	}
+
+	/**
+	 * 启用禁用
+	 */
+	@GetMapping("/updateEnableOrNot")
+	@ApiOperationSupport(order = 13)
+	@ApiOperation(value = "启用禁用", notes = "传入corpsDesc")
+	@RepeatSubmit
+	public R updateEnableOrNot(PjCorpsDesc corpsDesc) {
+		if (corpsDesc.getId() == null) {
+			return R.fail(500, "请选择数据");
+		}
+		boolean status = corpsDescService.updateById(corpsDesc);
+		return R.status(status);
+	}
+
+	/**
+	 * 下拉
+	 */
+	@GetMapping("/listAll")
+	@ApiOperationSupport(order = 14)
+	@ApiOperation(value = "下拉", notes = "传入corpsDesc")
+	public R<List<PjCorpsDesc>> listAll(PjCorpsDesc corpsDesc) {
+		LambdaQueryWrapper<PjCorpsDesc> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsDesc::getIsDeleted, 0)
+			.eq(PjCorpsDesc::getSalesCompanyId, AuthUtil.getDeptId())//公司
+			.apply("find_in_set(corp_type,'" + corpsDesc.getCorpType() + "')")
+			.eq(ObjectUtils.isNotNull(corpsDesc.getEnableOrNot()), PjCorpsDesc::getEnableOrNot, corpsDesc.getEnableOrNot())
+			.like(ObjectUtils.isNotNull(corpsDesc.getCname()), PjCorpsDesc::getCname, corpsDesc.getCname());
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("老板")
+			&& !AuthUtil.getUserRole().contains("销售总览")) {
+			if (AuthUtil.getUserRole().contains("业务员")) {
+				lambdaQueryWrapper.eq(PjCorpsDesc::getSalesmanId, AuthUtil.getUserId());
+			}
+		}
+		List<PjCorpsDesc> list = corpsDescService.list(lambdaQueryWrapper);
+
+		return R.data(list);
+	}
+
+	/**
+	 * app新增或修改客户
+	 */
+	@PostMapping("/appSubmitV1")
+	@ApiOperationSupport(order = 16)
+	@ApiOperation(value = "新增或修改", notes = "传入corpsDesc")
+	@RepeatSubmit
+	public R appSubmitV1(@Valid @RequestBody CorpsDescVO corpsDescVO) {
+		if (StringUtils.isBlank(corpsDescVO.getTenantId())) {
+			corpsDescVO.setTenantId(SecureUtil.getTenantId());
+		}
+		return corpsDescService.saveCorpsDescApp(corpsDescVO);
+	}
+
+	/**
+	 * app客户详情
+	 */
+	@GetMapping("/appDetailsV1")
+	public R appDetailsV1(Long id) {
+		return corpsDescService.appDetailsV1(id);
+	}
 
 }

+ 52 - 0
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/corp/service/ICorpsDescService.java

@@ -1,7 +1,16 @@
 package com.gubersail.admin.corp.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.gubersail.dealer.admin.api.corps.entity.PjCorpsDesc;
+import com.gubersail.dealer.admin.api.corps.vo.CorpsDescVO;
+import com.gubersail.dealer.admin.api.excel.CorpsDescImportExcel;
+import com.gubersail.dealer.admin.api.excel.CorpsImportBrandExcel;
+import com.gubersail.dealer.admin.api.excel.SupplierImportExcel;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.core.tool.api.R;
+
+import java.util.List;
 
 
 /**
@@ -17,4 +26,47 @@ public interface ICorpsDescService extends IService<PjCorpsDesc> {
 	 * @return 结果
 	 */
 	PjCorpsDesc getCorpsDescById(Long id);
+	/**
+	 * 获取客户详情
+	 * @param corpsDesc
+	 * @return
+	 */
+	CorpsDescVO getMessageByID(PjCorpsDesc corpsDesc);
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param corpsDesc
+	 * @return
+	 */
+	IPage<CorpsDescVO> selectCorpsDescPage(IPage<CorpsDescVO> page, CorpsDescVO corpsDesc);
+
+	/**
+	 * 保存客户信息
+	 * @param corpsDescVO
+	 * @return
+	 */
+	R submit(CorpsDescVO corpsDescVO);
+
+	/**
+	 * 导入客户
+	 *
+	 * @param data
+	 * @param
+	 * @return
+	 */
+	R importUser(List<CorpsDescImportExcel> data);
+
+	/**
+	 * 导出客户信息
+	 *
+	 * @param corpsDesc
+	 * @return
+	 */
+	List<CorpsDescVO> selectCorpsDescAll(CorpsDescVO corpsDesc);
+
+	R saveCorpsDescApp(CorpsDescVO corpsDescVO);
+
+	R appDetailsV1(Long id);
 }

+ 9 - 0
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/corp/service/ICorpsTypeDescService.java

@@ -21,6 +21,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.gubersail.dealer.admin.api.corps.entity.PjCorpsTypeDesc;
 import com.gubersail.dealer.admin.api.corps.vo.CorpsTypeDescVO;
 
+import java.util.List;
+
 /**
  * 客户-客户类别对应表 服务类
  *
@@ -38,4 +40,11 @@ public interface ICorpsTypeDescService extends IService<PjCorpsTypeDesc> {
 	 */
 	IPage<CorpsTypeDescVO> selectCorpsTypeDescPage(IPage<CorpsTypeDescVO> page, CorpsTypeDescVO corpsTypeDesc);
 
+	/**
+	 * 查询客户类别
+	 *
+	 * @param corpId
+	 * @return
+	 */
+	List<String> selectTypeId(Long corpId);
 }

+ 921 - 1
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/corp/service/impl/CorpsDescServiceImpl.java

@@ -1,11 +1,39 @@
 package com.gubersail.admin.corp.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gubersail.admin.corp.mapper.CorpsDescMapper;
 import com.gubersail.admin.corp.service.ICorpsDescService;
-import com.gubersail.dealer.admin.api.corps.entity.PjCorpsDesc;
+import com.gubersail.admin.goods.service.IBrandDescService;
+import com.gubersail.dealer.admin.api.corps.entity.*;
+import com.gubersail.dealer.admin.api.corps.vo.CorpsDescVO;
+import com.gubersail.dealer.admin.api.excel.CorpsDescImportExcel;
+import com.gubersail.dealer.admin.api.goods.entity.PjBrandDesc;
 import lombok.AllArgsConstructor;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.secure.utils.SecureUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.system.entity.Dept;
+import org.springblade.system.feign.ISysClient;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.entity.UserInfo;
+import org.springblade.system.user.enums.UserEnum;
+import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 
 /**
@@ -16,8 +44,900 @@ import org.springframework.stereotype.Service;
 public class CorpsDescServiceImpl extends ServiceImpl<CorpsDescMapper, PjCorpsDesc> implements ICorpsDescService {
 
 
+	private final CorpsAttnServiceImpl corpsAttnService;//客户联系人
+	private final CorpsAddrServiceImpl corpsAddrService;//客户地址
+	private final CorpsFilesServiceImpl corpsFilesService;//客户附件
+	private final CorpsTypeDescServiceImpl corpsTypeDescService;//客户类别对应表
+	private final CorpsTypeServiceImpl corpsTypeService;//客户类别
+	private final IUserClient userClient;
+	private final ISysClient sysClient;
+
+	private final IBrandDescService brandDescService;
+
 	@Override
 	public PjCorpsDesc getCorpsDescById(Long attnId) {
 		return baseMapper.selectById(attnId);
 	}
+
+	/**
+	 * 获取客户详情
+	 *
+	 * @param corpsDesc
+	 * @return
+	 */
+	@Override
+	public CorpsDescVO getMessageByID(PjCorpsDesc corpsDesc) {
+		CorpsDescVO corpsDescVO = new CorpsDescVO();
+		PjCorpsDesc desc = baseMapper.selectById(corpsDesc.getId());
+		if (desc != null) {
+			BeanUtil.copyProperties(desc, corpsDescVO);
+			//获取客户联系人
+			corpsDescVO.setCorpsAttnList(corpsAttnService.list(new QueryWrapper<PjCorpsAttn>().eq("pid", corpsDesc.getId()).eq("is_deleted", 0)));
+			//获取客户地址
+			corpsDescVO.setCorpsAddrList(corpsAddrService.list(new QueryWrapper<PjCorpsAddr>().eq("pid", corpsDesc.getId()).eq("is_deleted", 0)));
+			//获取客户附件
+			corpsDescVO.setCorpsFilesList(corpsFilesService.list(new QueryWrapper<PjCorpsFiles>().eq("pid", corpsDesc.getId()).eq("is_deleted", 0)));
+			if (org.springframework.util.StringUtils.hasText(desc.getResourceWarehouse())) {
+				corpsDescVO.setResourceWarehouseList(JSONArray.parseArray(desc.getResourceWarehouse(), Long.class));
+			}
+			//获取客户类别
+			List<String> longs = corpsTypeDescService.selectTypeId(corpsDesc.getId());
+			corpsDescVO.setCorpsTypeId(String.join(",", longs));
+			List<PjCorpsType> corpsTypeList = new ArrayList<>();
+			if (!longs.isEmpty()) {
+				corpsTypeList = corpsTypeService.list(new LambdaQueryWrapper<PjCorpsType>()
+					.eq(PjCorpsType::getIsDeleted, 0)
+					.eq(PjCorpsType::getTenantId, AuthUtil.getTenantId())
+					.in(PjCorpsType::getId, longs));
+			}
+			StringBuilder corpsTypeName = new StringBuilder();
+			if (ObjectUtils.isNotNull(longs)) {
+				for (String id : longs) {
+					corpsTypeList.stream().filter(e -> id.equals(e.getId() + "")).findFirst()
+						.ifPresent(corpsType -> corpsTypeName.append(corpsType.getCname()).append(","));
+				}
+				String corpsName = corpsTypeName.substring(0, corpsTypeName.length() - 1);
+				corpsDescVO.setCorpsTypeName(corpsName);
+			}
+		}
+		return corpsDescVO;
+	}
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param page
+	 * @param corpsDesc
+	 * @return
+	 */
+	@Override
+	public IPage<CorpsDescVO> selectCorpsDescPage(IPage<CorpsDescVO> page, CorpsDescVO corpsDesc) {
+		//获取客户子类别
+		if (StringUtils.isNotBlank(corpsDesc.getCorpsTypeId())) {
+			Long corpsTypeId = Long.parseLong(corpsDesc.getCorpsTypeId());
+			List<Long> corpsTypeIdList = new ArrayList<>();
+			corpsTypeService.selectChildById(corpsTypeId, corpsTypeIdList);
+			corpsTypeIdList.add(corpsTypeId);
+			corpsDesc.setTypeList(corpsTypeIdList);
+		} else if (StringUtils.isNotBlank(corpsDesc.getCorpsTypeName())) {
+			LambdaQueryWrapper<PjCorpsType> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(PjCorpsType::getCname, corpsDesc.getCorpsTypeName());
+			lambdaQueryWrapper.eq(PjCorpsType::getIsDeleted, 0);
+			lambdaQueryWrapper.eq(PjCorpsType::getTenantId, SecureUtil.getTenantId());
+			List<PjCorpsType> corpsTypeList = corpsTypeService.list(lambdaQueryWrapper);
+			if (CollectionUtils.isNotEmpty(corpsTypeList)) {
+				List<Long> corpsTypeIdList = new ArrayList<>();
+				corpsTypeList.forEach(item -> {
+					corpsTypeService.selectChildById(item.getId(), corpsTypeIdList);
+					corpsTypeIdList.add(item.getId());
+				});
+				corpsDesc.setTypeList(corpsTypeIdList);
+			}
+		}
+		corpsDesc.setTenantId(AuthUtil.getTenantId());
+		corpsDesc.setIsDeleted(0);
+		corpsDesc.setStrTenantId(Arrays.asList(AuthUtil.getDeptId().split(",")));
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("老板")
+			&& !AuthUtil.getUserRole().contains("销售总览")) {
+			if (AuthUtil.getUserRole().contains("业务员")) {
+				corpsDesc.setSalesmanId(AuthUtil.getUserId());
+			}
+		}
+		corpsDesc.setSalesCompanyId(Long.parseLong(AuthUtil.getDeptId()));
+		IPage<CorpsDescVO> page1 = page.setRecords(baseMapper.selectCorpsDescPage(page, corpsDesc));
+		return page1;
+
+	}
+
+	/**
+	 * 新增或修改
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R submit(CorpsDescVO corpsDescVO) {
+		PjCorpsDesc corpsDesc = new PjCorpsDesc();
+		BeanUtil.copyProperties(corpsDescVO, corpsDesc);
+		Long userId = SecureUtil.getUserId();
+		Date date = new Date();
+		if (ObjectUtils.isNotNull(corpsDesc.getBrandId())) {
+			List<PjBrandDesc> pjBrandDescList = brandDescService.list(new LambdaQueryWrapper<PjBrandDesc>()
+				.eq(PjBrandDesc::getTenantId, AuthUtil.getTenantId())
+				.eq(PjBrandDesc::getIsDeleted, 0)
+				.eq(PjBrandDesc::getType, "PP")
+				.eq(PjBrandDesc::getEnableOrNot, 1)
+				.apply("find_in_set(id,'" + corpsDesc.getBrandId() + "')"));
+			if (!pjBrandDescList.isEmpty()) {
+				corpsDesc.setBrandName(pjBrandDescList.stream().map(PjBrandDesc::getCname).collect(Collectors.joining(",")));
+			}
+		}
+		List<PjCorpsDesc> pjCorpsDesc = baseMapper.selectList(new LambdaQueryWrapper<PjCorpsDesc>()
+			.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsDesc::getIsDeleted, 0)
+			.eq(PjCorpsDesc::getSalesCompanyId, AuthUtil.getTenantId())
+			.eq(PjCorpsDesc::getCname, corpsDesc.getCname()));
+		//保存客户信息
+		if (!org.springframework.util.CollectionUtils.isEmpty(corpsDescVO.getResourceWarehouseList())) {
+			corpsDesc.setResourceWarehouse(JSONArray.toJSONString(corpsDescVO.getResourceWarehouseList()));
+		}
+		if (corpsDesc.getId() == null) {
+			if (!pjCorpsDesc.isEmpty()) {
+				throw new RuntimeException("客户" + corpsDesc.getCname() + "已存在,请勿重复添加!");
+			}
+			corpsDesc.setTenantId(SecureUtil.getTenantId());
+			corpsDesc.setCreateDept(Long.valueOf(SecureUtil.getDeptId()));
+			corpsDesc.setCreateTime(date);
+			corpsDesc.setCreateUser(userId);
+			corpsDesc.setSalesCompanyId(Long.valueOf(AuthUtil.getDeptId()));
+			corpsDesc.setSalesCompanyName(sysClient.getDept(Long.valueOf(AuthUtil.getDeptId())).getData().getFullName());
+			corpsDesc.setEnableOrNot(1);
+		} else {
+			List<Long> ids = pjCorpsDesc.stream().map(PjCorpsDesc::getId).collect(Collectors.toList());
+			if (!pjCorpsDesc.isEmpty() && !ids.contains(corpsDesc.getId())) {
+				throw new RuntimeException("客户" + corpsDesc.getCname() + "已存在,请勿重复添加!");
+			}
+			corpsDesc.setTenantId(SecureUtil.getTenantId());
+			corpsDesc.setUpdateTime(date);
+			corpsDesc.setCreateDept(Long.valueOf(SecureUtil.getDeptId()));
+			corpsDesc.setUpdateUser(AuthUtil.getUserId());
+
+			/*List<PjOrder> orderList = orderMapper.selectList(new LambdaQueryWrapper<PjOrder>()
+				.eq(PjOrder::getTenantId, AuthUtil.getTenantId())
+				.eq(PjOrder::getIsDeleted, 0)
+				.eq(PjOrder::getCustomerId, corpsDesc.getId()));
+			if (!orderList.isEmpty()) {
+				List<PjOrder> orders = orderList.stream().filter(item -> !corpsDesc.getCname().equals(item.getCustomerName()))
+					.collect(Collectors.toList());
+				for (PjOrder item : orders) {
+					item.setCustomerName(corpsDesc.getCname());
+					item.setUpdateTime(new Date());
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setUpdateUserName(AuthUtil.getUserName());
+					orderMapper.updateById(item);
+				}
+			}
+			List<PjShip> shipList = shipMapper.selectList(new LambdaQueryWrapper<PjShip>()
+				.eq(PjShip::getTenantId, AuthUtil.getTenantId())
+				.eq(PjShip::getIsDeleted, 0)
+				.eq(PjShip::getCustomerId, corpsDesc.getId()));
+			if (!shipList.isEmpty()) {
+				List<PjShip> ships = shipList.stream().filter(item -> !corpsDesc.getCname().equals(item.getCustomerName()))
+					.collect(Collectors.toList());
+				for (PjShip item : ships) {
+					item.setCustomerName(corpsDesc.getCname());
+					item.setUpdateTime(new Date());
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setUpdateUserName(AuthUtil.getUserName());
+					shipMapper.updateById(item);
+				}
+			}
+			List<PjSettlement> settlementList = settlementMapper.selectList(new LambdaQueryWrapper<PjSettlement>()
+				.eq(PjSettlement::getTenantId, AuthUtil.getTenantId())
+				.eq(PjSettlement::getIsDeleted, 0)
+				.eq(PjSettlement::getCorpId, corpsDesc.getId()));
+			if (!settlementList.isEmpty()) {
+				List<PjSettlement> settlements = settlementList.stream().filter(item -> !corpsDesc.getCname().equals(item.getCorpName()))
+					.collect(Collectors.toList());
+				for (PjSettlement item : settlements) {
+					item.setCorpName(corpsDesc.getCname());
+					item.setUpdateTime(new Date());
+					item.setUpdateUser(AuthUtil.getUserId());
+					settlementMapper.updateById(item);
+				}
+			}*/
+		}
+		this.saveOrUpdate(corpsDesc);
+		Long pId = corpsDesc.getId();
+		String tenantId = corpsDesc.getTenantId();
+		//保存客户联系人信息
+		R saveOrUpdateAttn = this.saveOrUpdateAttn(corpsDescVO, userId, pId, tenantId, date);
+		if (saveOrUpdateAttn.getCode() != 200) {
+			TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+			return saveOrUpdateAttn;
+		}
+
+		//保存客户地址信息
+		this.saveOrUpdateAddr(corpsDescVO, userId, pId, tenantId, date);
+
+		//保存客户文件信息
+		this.saveOrUpdateFiles(corpsDescVO, userId, pId, tenantId, date);
+
+		//保存客户与类别对应关系
+		this.saveOrUpdateTypeDesc(corpsDescVO, userId, pId, date, tenantId);
+
+		return R.data(corpsDesc);
+	}
+
+	/**
+	 * 导入客户
+	 *
+	 * @param data
+	 * @param
+	 * @return
+	 */
+	@Override
+	@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 = corpsTypeService.list(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 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(), "客户");
+		List<String> cname = data.stream().map(CorpsDescImportExcel::getCname).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+		if (cname.isEmpty()){
+			throw new RuntimeException("客户名称不能为空");
+		}
+		LambdaQueryWrapper<PjCorpsDesc> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.in(PjCorpsDesc::getCname, cname);
+		queryWrapper.like(PjCorpsDesc::getCorpType, "KH");
+		queryWrapper.eq(PjCorpsDesc::getIsDeleted, 0);
+		List<PjCorpsDesc> selectList = baseMapper.selectList(queryWrapper);
+		for (CorpsDescImportExcel e : data) {
+			PjCorpsType corpsType = pjCorpsTypeList.stream().filter(item -> item.getCname().equals(e.getType())).findFirst().orElse(null);
+			if (corpsType == null) {
+				countList.add(false);
+				continue;
+			}
+			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) {
+					throw new SecurityException("请输入正确的业务员");
+				}
+				corpsDesc.setSalesmanId(user1.getId());
+				corpsDesc.setSalesmanName(user1.getRealName());
+			}
+			corpsDesc.setSalesCompanyId(salesCompanyId);
+			corpsDesc.setSalesCompanyName(salesCompanyName);
+			corpsDesc.setCreditLimit(e.getCreditLimit());
+			corpsDesc.setUseCreditLimit(e.getUseCreditLimit());
+			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(",")));
+					}
+				}
+			}
+			//名称相等视为重复数据
+			PjCorpsDesc selectOne = selectList.stream().filter(i-> i.getCname().equals(corpsDesc.getCname()))
+				.findFirst().orElse(null);
+			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()));
+				corpsTypeDescService.save(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("创建用户失败");
+						}
+					}
+					//保存客户联系人信息
+					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 {
+				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("导入失败,请仔细检查导入数据");
+		}
+
+		/*} catch (Exception exception) {
+			throw new SecurityException("请检查导入数据" + exception.getMessage());
+		}*/
+	}
+
+	/**
+	 * 自定义分页
+	 *
+	 * @param corpsDesc
+	 * @return
+	 */
+	@Override
+	public List<CorpsDescVO> selectCorpsDescAll(CorpsDescVO corpsDesc) {
+		//获取客户子类别
+		if (StringUtils.isNotBlank(corpsDesc.getCorpsTypeId())) {
+			Long corpsTypeId = Long.parseLong(corpsDesc.getCorpsTypeId());
+			List<Long> corpsTypeIdList = new ArrayList<>();
+			corpsTypeService.selectChildById(corpsTypeId, corpsTypeIdList);
+			corpsTypeIdList.add(corpsTypeId);
+			corpsDesc.setTypeList(corpsTypeIdList);
+		} else if (StringUtils.isNotBlank(corpsDesc.getCorpsTypeName())) {
+			LambdaQueryWrapper<PjCorpsType> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper.eq(PjCorpsType::getCname, corpsDesc.getCorpsTypeName());
+			lambdaQueryWrapper.eq(PjCorpsType::getIsDeleted, 0);
+			lambdaQueryWrapper.eq(PjCorpsType::getTenantId, SecureUtil.getTenantId());
+			List<PjCorpsType> corpsTypeList = corpsTypeService.list(lambdaQueryWrapper);
+			if (CollectionUtils.isNotEmpty(corpsTypeList)) {
+				List<Long> corpsTypeIdList = new ArrayList<>();
+				corpsTypeList.forEach(item -> {
+					corpsTypeService.selectChildById(item.getId(), corpsTypeIdList);
+					corpsTypeIdList.add(item.getId());
+				});
+				corpsDesc.setTypeList(corpsTypeIdList);
+			}
+		}
+		corpsDesc.setTenantId(AuthUtil.getTenantId());
+		corpsDesc.setIsDeleted(0);
+		corpsDesc.setCorpType("KH");
+
+		List<CorpsDescVO> list = baseMapper.selectCorpsDescPage(null, corpsDesc);
+		return list;
+
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R saveCorpsDescApp(CorpsDescVO corpsDescVO) {
+		PjCorpsDesc corpsDesc = new PjCorpsDesc();
+		BeanUtil.copyProperties(corpsDescVO, corpsDesc);
+		Long userId = SecureUtil.getUserId();
+		Long deptId = Long.valueOf(AuthUtil.getDeptId());
+		Date date = new Date();
+
+		if (ObjectUtils.isNotNull(corpsDesc.getBrandId())) {
+			List<PjBrandDesc> pjBrandDescList = brandDescService.list(new LambdaQueryWrapper<PjBrandDesc>()
+				.eq(PjBrandDesc::getTenantId, AuthUtil.getTenantId())
+				.eq(PjBrandDesc::getIsDeleted, 0)
+				.eq(PjBrandDesc::getType, "PP")
+				.eq(PjBrandDesc::getEnableOrNot, 1)
+				.apply("find_in_set(id,'" + corpsDesc.getBrandId() + "')"));
+			if (!pjBrandDescList.isEmpty()) {
+				corpsDesc.setBrandName(pjBrandDescList.stream().map(PjBrandDesc::getCname).collect(Collectors.joining(",")));
+			}
+		}
+
+		R<Dept> resDept = sysClient.getDept(Long.parseLong(AuthUtil.getDeptId()));
+		if (!resDept.isSuccess() || ObjectUtils.isNull(resDept.getData())) {
+			throw new RuntimeException("未找到小程序id");
+		}
+		String deptName = resDept.getData().getFullName();
+		//保存客户信息
+		corpsDesc.setCorpType("KH");
+		if (StringUtils.isBlank(corpsDesc.getCname())) {
+			return R.data(200, "error", "客户名称不能为空");
+		}
+		User user = userClient.loginByAccount("", corpsDesc.getTel(), "4", AuthUtil.getTenantId(), resDept.getData().getAppletsId());
+		if (ObjectUtils.isNull(user)) {
+			//用户不存在,注册用户
+			User saveUser = new User();
+			saveUser.setAppletsId(resDept.getData().getAppletsId());
+			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());
+			//获取注册用户类型
+			R<String> r = sysClient.getRoleIds(AuthUtil.getTenantId(), "客户");
+			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()) {
+				user = resu.getData().getUser();
+			} else {
+				throw new RuntimeException("创建用户失败");
+			}
+		}
+		List<PjCorpsDesc> pjCorpsDesc = baseMapper.selectList(new LambdaQueryWrapper<PjCorpsDesc>()
+			.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsDesc::getIsDeleted, 0)
+			.eq(PjCorpsDesc::getCname, corpsDesc.getCname()));
+		List<PjCorpsDesc> corpsDescTel = baseMapper.selectList(new LambdaQueryWrapper<PjCorpsDesc>()
+			.eq(PjCorpsDesc::getTenantId, AuthUtil.getTenantId())
+			.eq(PjCorpsDesc::getIsDeleted, 0)
+			.eq(PjCorpsDesc::getTel, corpsDesc.getTel()));
+		if (null == corpsDesc.getId()) {
+			if (!pjCorpsDesc.isEmpty()) {
+				throw new RuntimeException("客户" + corpsDesc.getCname() + "已存在,请勿重复添加!");
+			}
+			if (!corpsDescTel.isEmpty()) {
+				throw new RuntimeException("客户" + corpsDesc.getTel() + "已存在,请勿重复添加!");
+			}
+			corpsDesc.setTenantId(SecureUtil.getTenantId());
+			corpsDesc.setCreateDept(Long.valueOf(SecureUtil.getDeptId()));
+			corpsDesc.setCreateTime(date);
+			corpsDesc.setCreateUser(userId);
+			corpsDesc.setPriceSystem("售价1");
+			corpsDesc.setSalesCompanyId(deptId);
+			corpsDesc.setSalesCompanyName(deptName);
+			baseMapper.insert(corpsDesc);
+			Long pId = corpsDesc.getId();
+			String tenantId = corpsDesc.getTenantId();
+
+			//保存客户联系人信息
+			PjCorpsAttn corpsAttn = new PjCorpsAttn();
+			if (ObjectUtils.isNotNull(user)) {
+				long count = corpsAttnService.count(new LambdaQueryWrapper<PjCorpsAttn>()
+					.eq(PjCorpsAttn::getUserId, user.getId())
+					.eq(PjCorpsAttn::getTel, corpsDesc.getTel())
+					.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+					.eq(PjCorpsAttn::getIsDeleted, 0));
+				if (count > 0) {
+					throw new RuntimeException("手机号已存在,提交失败");
+				}
+				corpsAttn.setUserId(user.getId());
+			}
+			List<PjCorpsAttn> corpsAttnList = corpsAttnService.list(new LambdaQueryWrapper<PjCorpsAttn>()
+				.eq(PjCorpsAttn::getTel, corpsDesc.getTel())
+				.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+				.eq(PjCorpsAttn::getIsDeleted, 0));
+			if (!corpsAttnList.isEmpty()) {
+				PjCorpsDesc pjCorpsDesc1 = baseMapper.selectById(corpsAttnList.get(0).getPid());
+				if (pjCorpsDesc1 != null) {
+					throw new RuntimeException("该手机号:" + corpsDesc.getTel() + "已经在客户:" + pjCorpsDesc1.getCname() + "注册,请修改客户名称");
+				} else {
+					throw new RuntimeException("该手机号未查到客户信息");
+				}
+			}
+			corpsAttn.setCname(corpsDescVO.getAttn());
+			corpsAttn.setTel(corpsDesc.getTel());
+			corpsAttn.setTenantId(AuthUtil.getTenantId());
+			corpsAttn.setPid(corpsDesc.getId());
+			corpsAttn.setCreateTime(new Date());
+			corpsAttn.setTenantId(AuthUtil.getTenantId());
+			corpsAttn.setCreateUser(AuthUtil.getUserId());
+			corpsAttn.setSalesCompanyId(deptId);
+			corpsAttn.setSalesCompanyName(deptName);
+			corpsAttnService.save(corpsAttn);
+
+			//保存客户地址信息
+			PjCorpsAddr corpsAddr = new PjCorpsAddr();
+			corpsAddr.setContacts(corpsDescVO.getAttn());
+			corpsAddr.setTel(corpsDesc.getTel());
+			corpsAddr.setBelongtoarea(corpsDescVO.getAddr());
+			corpsAddr.setDetailedAddress(corpsDescVO.getDetails());
+			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);
+			//保存客户与类别对应关系
+			this.saveOrUpdateTypeDesc(corpsDescVO, userId, pId, date, tenantId);
+		} else {
+			List<Long> ids = pjCorpsDesc.stream().map(PjCorpsDesc::getId).distinct().collect(Collectors.toList());
+			if (!pjCorpsDesc.isEmpty() && !ids.contains(corpsDesc.getId())) {
+				throw new RuntimeException("客户" + corpsDesc.getCname() + "已存在,请勿重复添加!");
+			}
+			List<Long> idList = corpsDescTel.stream().map(PjCorpsDesc::getId).distinct().collect(Collectors.toList());
+			if (!corpsDescTel.isEmpty() && !idList.contains(corpsDesc.getId())) {
+				throw new RuntimeException("客户" + corpsDesc.getTel() + "已存在,请勿重复添加!");
+			}
+			corpsDesc.setUpdateTime(new Date());
+			corpsDesc.setUpdateUser(AuthUtil.getUserId());
+			baseMapper.updateById(corpsDesc);
+			List<PjCorpsAttn> corpsAttnList = corpsAttnService.list(new LambdaQueryWrapper<PjCorpsAttn>()
+				.eq(PjCorpsAttn::getIsDeleted, 0)
+				.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+				.eq(PjCorpsAttn::getTel, corpsDesc.getTel()));
+			PjCorpsAttn corpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<PjCorpsAttn>().eq(PjCorpsAttn::getIsDeleted, 0)
+				.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+				.eq(PjCorpsAttn::getPid, corpsDesc.getId())
+				.eq(PjCorpsAttn::getTel, corpsDesc.getTel()));
+			if (ObjectUtils.isNotNull(corpsAttn)) {
+				List<Long> idLists = corpsAttnList.stream().map(PjCorpsAttn::getId).distinct().collect(Collectors.toList());
+				if (!corpsAttnList.isEmpty() && !idLists.contains(corpsAttn.getId())) {
+					throw new RuntimeException("客户" + corpsDesc.getTel() + "已存在,请勿重复添加!");
+				}
+				if (ObjectUtils.isNotNull(user)) {
+					corpsAttn.setUserId(user.getId());
+				}
+				corpsAttn.setCname(corpsDescVO.getAttn());
+				corpsAttn.setTel(corpsDesc.getTel());
+				corpsAttn.setSalesCompanyId(deptId);
+				corpsAttn.setSalesCompanyName(deptName);
+				corpsAttnService.updateById(corpsAttn);
+			} else {
+				if (!corpsAttnList.isEmpty()) {
+					throw new RuntimeException("客户" + corpsDesc.getTel() + "已存在,请勿重复添加!");
+				}
+				//保存客户联系人信息
+				PjCorpsAttn corpsAttn1 = new PjCorpsAttn();
+				if (ObjectUtils.isNotNull(user)) {
+					corpsAttn1.setUserId(user.getId());
+				}
+				corpsAttn1.setCname(corpsDescVO.getAttn());
+				corpsAttn1.setTel(corpsDesc.getTel());
+				corpsAttn1.setTenantId(AuthUtil.getTenantId());
+				corpsAttn1.setPid(corpsDesc.getId());
+				corpsAttn1.setCreateTime(new Date());
+				corpsAttn1.setCreateUser(AuthUtil.getUserId());
+				corpsAttn1.setSalesCompanyId(deptId);
+				corpsAttn1.setSalesCompanyName(deptName);
+				corpsAttnService.save(corpsAttn1);
+			}
+
+			PjCorpsAddr corpsAddr = corpsAddrService.getOne(new LambdaQueryWrapper<PjCorpsAddr>().eq(PjCorpsAddr::getIsDeleted, 0)
+				.eq(PjCorpsAddr::getTenantId, AuthUtil.getTenantId())
+				.eq(PjCorpsAddr::getPid, corpsDesc.getId())
+				.eq(PjCorpsAddr::getTel, corpsDesc.getTel()));
+			if (ObjectUtils.isNotNull(corpsAddr)) {
+				corpsAddr.setContacts(corpsDescVO.getAttn());
+				corpsAddr.setTel(corpsDesc.getTel());
+				corpsAddr.setBelongtoarea(corpsDescVO.getAddr());
+				corpsAddr.setDetailedAddress(corpsDescVO.getDetails());
+				corpsAddr.setSalesCompanyId(deptId);
+				corpsAddr.setSalesCompanyName(deptName);
+				corpsAddrService.updateById(corpsAddr);
+			} else {
+				//保存客户地址信息
+				PjCorpsAddr corpsAddr1 = new PjCorpsAddr();
+				corpsAddr1.setContacts(corpsDescVO.getAttn());
+				corpsAddr1.setTel(corpsDesc.getTel());
+				corpsAddr1.setBelongtoarea(corpsDescVO.getAddr());
+				corpsAddr1.setDetailedAddress(corpsDescVO.getDetails());
+				corpsAddr1.setTenantId(AuthUtil.getTenantId());
+				corpsAddr1.setPid(corpsDesc.getId());
+				corpsAddr1.setCreateTime(new Date());
+				corpsAddr1.setTenantId(AuthUtil.getTenantId());
+				corpsAddr1.setCreateUser(AuthUtil.getUserId());
+				corpsAddr1.setSalesCompanyId(deptId);
+				corpsAddr1.setSalesCompanyName(deptName);
+				corpsAddr1.setDefaultAddres("0");
+				corpsAddrService.save(corpsAddr1);
+			}
+		}
+		//保存客户与类别对应关系
+		this.saveOrUpdateTypeDesc(corpsDescVO, userId, corpsDesc.getId(), date, AuthUtil.getTenantId());
+		return R.data(corpsDesc);
+	}
+
+	@Override
+	public R appDetailsV1(Long id) {
+		CorpsDescVO corpsDescVO = new CorpsDescVO();
+		PjCorpsDesc corpsDesc = baseMapper.selectById(id);
+		BeanUtil.copyProperties(corpsDesc, corpsDescVO);
+		if (ObjectUtils.isNotNull(corpsDesc)) {
+			PjCorpsAddr corpsAddr = corpsAddrService.getOne(new LambdaQueryWrapper<PjCorpsAddr>().eq(PjCorpsAddr::getIsDeleted, 0)
+				.eq(PjCorpsAddr::getTenantId, AuthUtil.getTenantId())
+				.eq(PjCorpsAddr::getPid, corpsDesc.getId())
+				.eq(PjCorpsAddr::getDefaultAddres, "1"));
+			if (ObjectUtils.isNotNull(corpsAddr)) {
+				corpsDescVO.setAddr(corpsAddr.getBelongtoarea());
+				corpsDescVO.setDetails(corpsAddr.getDetailedAddress());
+			}
+			PjCorpsAttn pjCorpsAttn = corpsAttnService.getOne(new LambdaQueryWrapper<PjCorpsAttn>().eq(PjCorpsAttn::getIsDeleted, 0)
+				.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+				.eq(PjCorpsAttn::getPid, corpsDesc.getId())
+				.eq(PjCorpsAttn::getTel, corpsDesc.getTel()));
+			if (ObjectUtils.isNotNull(pjCorpsAttn)) {
+				corpsDescVO.setAttn(pjCorpsAttn.getCname());
+				corpsDesc.setTel(pjCorpsAttn.getTel());
+			}
+			List<PjCorpsAttn> attnList = corpsAttnService.list(new LambdaQueryWrapper<PjCorpsAttn>().eq(PjCorpsAttn::getIsDeleted, 0)
+				.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+				.eq(PjCorpsAttn::getPid, corpsDesc.getId()));
+			corpsDescVO.setNumber(new BigDecimal(attnList.size()));
+			//获取客户类别
+			List<String> longs = corpsTypeDescService.selectTypeId(corpsDesc.getId());
+			corpsDescVO.setCorpsTypeId(String.join(",", longs));
+			StringBuilder corpsTypeName = new StringBuilder();
+			if (ObjectUtils.isNotNull(longs)) {
+				for (String item : longs) {
+					String name = corpsTypeService.getById(Long.parseLong(item)) == null ? "" : corpsTypeService.getById(Long.parseLong(item)).getCname();
+					corpsTypeName.append(name).append(",");
+				}
+				String corpsName = corpsTypeName.substring(0, corpsTypeName.length() - 1);
+				corpsDescVO.setCorpsTypeName(corpsName);
+			} else {
+				corpsDescVO.setCorpsTypeName("");
+			}
+		}
+		return R.data(corpsDesc);
+	}
+
+	/**
+	 * 保存客户联系人信息
+	 *
+	 * @param corpsDesc 客户信息
+	 * @param userId    登录人id
+	 * @param pId       客户详情表id
+	 * @param tenantId  租户id
+	 * @param date      创建时间
+	 * @return
+	 */
+	public R saveOrUpdateAttn(CorpsDescVO corpsDesc, Long userId, Long pId, String tenantId, Date date) {
+		if (CollectionUtils.isNotEmpty(corpsDesc.getCorpsAttnList())) {
+			String tel = corpsDesc.getCorpsAttnList().stream().map(PjCorpsAttn::getTel).filter(Objects::nonNull)
+				.distinct().collect(Collectors.joining(","));
+			List<PjCorpsAttn> pjCorpsAttnList = corpsAttnService.list(new LambdaQueryWrapper<PjCorpsAttn>()
+				.eq(PjCorpsAttn::getIsDeleted, 0)
+				.eq(PjCorpsAttn::getTenantId, AuthUtil.getTenantId())
+				.apply("find_in_set(tel,'" + tel + "')"));
+			for (PjCorpsAttn corpsAttn : corpsDesc.getCorpsAttnList()) {
+				corpsAttn.setPid(pId);
+				List<PjCorpsAttn> pjCorpsAttns = pjCorpsAttnList.stream().filter(e -> e.getTel().equals(corpsAttn.getTel()))
+					.collect(Collectors.toList());
+				if (corpsAttn.getId() == null) {
+					if (!pjCorpsAttns.isEmpty()) {
+						throw new RuntimeException("手机号:" + corpsAttn.getTel() + "已存在,请勿重复添加");
+					}
+					corpsAttn.setTenantId(tenantId);
+					corpsAttn.setCreateTime(date);
+					corpsAttn.setCreateUser(userId);
+					corpsAttnService.save(corpsAttn);
+				} else {
+					List<Long> ids = pjCorpsAttns.stream().map(PjCorpsAttn::getId).collect(Collectors.toList());
+					if (!pjCorpsAttns.isEmpty() && !ids.contains(corpsAttn.getId())) {
+						throw new RuntimeException("手机号" + corpsAttn.getTel() + "已存在,请勿重复添加!");
+					}
+					corpsAttn.setTenantId(tenantId);
+					corpsAttn.setUpdateTime(date);
+					corpsAttn.setUpdateUser(userId);
+					corpsAttnService.updateById(corpsAttn);
+				}
+			}
+		}
+		return R.success("success");
+	}
+
+	/**
+	 * 保存客户文件信息
+	 *
+	 * @param corpsDesc 客户信息
+	 * @param userId    登录人id
+	 * @param pId       客户详情表id
+	 * @param tenantId  租户id
+	 * @param date      创建时间
+	 * @return
+	 */
+	public void saveOrUpdateFiles(CorpsDescVO corpsDesc, Long userId, Long pId, String tenantId, Date date) {
+		if (CollectionUtils.isNotEmpty(corpsDesc.getCorpsFilesList())) {
+			corpsDesc.getCorpsFilesList().forEach(files -> {
+				files.setPid(pId);
+				files.setTenantId(tenantId);
+				if (files.getId() == null) {
+					files.setCreateTime(date);
+					files.setCreateUser(userId);
+				} else {
+					files.setUpdateTime(date);
+					files.setUpdateUser(userId);
+				}
+			});
+			corpsFilesService.saveOrUpdateBatch(corpsDesc.getCorpsFilesList());
+		}
+	}
+
+	/**
+	 * 保存客户地址信息
+	 *
+	 * @param corpsDesc 客户信息
+	 * @param userId    登录人id
+	 * @param pId       客户详情表id
+	 * @param tenantId  租户id
+	 * @param date      创建时间
+	 * @return
+	 */
+	public void saveOrUpdateAddr(CorpsDescVO corpsDesc, Long userId, Long pId, String tenantId, Date date) {
+		if (CollectionUtils.isNotEmpty(corpsDesc.getCorpsAddrList())) {
+			long count = corpsDesc.getCorpsAddrList().stream().filter(e -> "1".equals(e.getDefaultAddres())).count();
+			if (count != 1) {
+				throw new RuntimeException("默认地址唯一");
+			}
+			corpsDesc.getCorpsAddrList().forEach(addr -> {
+				addr.setPid(pId);
+				addr.setTenantId(tenantId);
+				if (addr.getId() == null) {
+					addr.setCreateTime(date);
+					addr.setCreateUser(userId);
+				} else {
+					addr.setUpdateTime(date);
+					addr.setUpdateUser(userId);
+				}
+			});
+			corpsAddrService.saveOrUpdateBatch(corpsDesc.getCorpsAddrList());
+		}
+	}
+
+	/**
+	 * 保护客户与类别对应信息
+	 *
+	 * @param corpsDesc 客户信息
+	 * @param userId    登录人id
+	 * @param pId       客户详情表id
+	 * @param date      创建时间
+	 * @return
+	 */
+	public void saveOrUpdateTypeDesc(CorpsDescVO corpsDesc, Long userId, Long pId, Date date, String tenantId) {
+		if (StringUtils.isBlank(corpsDesc.getCorpsTypeId())) {
+			return;
+		}
+		List<String> list = Arrays.asList(corpsDesc.getCorpsTypeId().split(","));
+		if (!list.isEmpty()) {
+			return;
+		}
+		corpsTypeDescService.remove(new QueryWrapper<PjCorpsTypeDesc>().eq("corp_id", corpsDesc.getId()));
+		List<PjCorpsTypeDesc> typeDescList = corpsTypeDescService.list(new QueryWrapper<PjCorpsTypeDesc>().eq("corp_id", pId)
+			.in("corp_type_id", list));
+		List<PjCorpsTypeDesc> typeDescListNew = new ArrayList<>();
+		list.forEach(item -> {
+			if (typeDescList.isEmpty()) {
+				return;
+			}
+			PjCorpsTypeDesc typeDesc = typeDescList.stream().filter(e -> item.equals(e.getCorpTypeId() + "")).findFirst().orElse(null);
+			if (typeDesc != null) {
+				typeDesc.setCorpTypeId(Long.valueOf(item));
+				typeDesc.setCorpId(corpsDesc.getId());
+				typeDesc.setUpdateTime(date);
+				typeDesc.setUpdateUser(userId);
+				typeDescListNew.add(typeDesc);
+			} else {
+				PjCorpsTypeDesc corpsTypeDesc = new PjCorpsTypeDesc();
+				corpsTypeDesc.setCorpId(corpsDesc.getId());
+				corpsTypeDesc.setCorpTypeId(Long.valueOf(item));
+				corpsTypeDesc.setCreateUser(userId);
+				corpsTypeDesc.setCreateTime(date);
+				corpsTypeDesc.setTenantId(tenantId);
+				typeDescListNew.add(corpsTypeDesc);
+			}
+		});
+		if (!typeDescListNew.isEmpty()) {
+			corpsTypeDescService.saveOrUpdateBatch(typeDescListNew);
+		}
+	}
 }

+ 7 - 0
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/corp/service/impl/CorpsTypeDescServiceImpl.java

@@ -24,6 +24,8 @@ import com.gubersail.dealer.admin.api.corps.entity.PjCorpsTypeDesc;
 import com.gubersail.dealer.admin.api.corps.vo.CorpsTypeDescVO;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 客户-客户类别对应表 服务实现类
  *
@@ -38,4 +40,9 @@ public class CorpsTypeDescServiceImpl extends ServiceImpl<CorpsTypeDescMapper, P
 		return page.setRecords(baseMapper.selectCorpsTypeDescPage(page, corpsTypeDesc));
 	}
 
+	@Override
+	public List<String> selectTypeId(Long corpId) {
+		return baseMapper.selectTypeId(corpId);
+	}
+
 }

+ 21 - 23
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/lead/controller/BladeSalesLeadController.java

@@ -17,31 +17,28 @@
 package com.gubersail.admin.lead.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.gubersail.dealer.admin.api.claim.entity.BladeClaim;
-import com.gubersail.dealer.admin.api.claim.vo.BladeClaimVO;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.gubersail.admin.lead.service.IBladeSalesLeadService;
+import com.gubersail.admin.wrapper.SalesLeadWrapper;
+import com.gubersail.dealer.admin.api.lead.entity.BladeSalesLead;
+import com.gubersail.dealer.admin.api.lead.vo.BladeSalesLeadVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
-import javax.validation.Valid;
-
+import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.web.bind.annotation.*;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.gubersail.dealer.admin.api.lead.entity.BladeSalesLead;
-import com.gubersail.dealer.admin.api.lead.vo.BladeSalesLeadVO;
-import com.gubersail.admin.lead.service.IBladeSalesLeadService;
-import org.springblade.core.boot.ctrl.BladeController;
 
+import javax.validation.Valid;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
@@ -94,33 +91,34 @@ public class BladeSalesLeadController extends BladeController {
 		IPage<BladeSalesLead> pages = bladeSalesLeadService.page(Condition.getPage(query), lambdaQueryWrapper);
 		//查询数据返回实体转换
 		IPage<BladeSalesLeadVO> voPage = new Page<>();
-		BeanUtil.copyProperties(pages, voPage);
-		if (!voPage.getRecords().isEmpty()) {
+		if (!pages.getRecords().isEmpty()) {
+			//查询数据返回实体转换
+			voPage = SalesLeadWrapper.build().pageVO(pages);
 			//获取返回数据创建人,修改人id
 			List<Long> userIdList = new ArrayList<>();
-			List<Long> createUserList = voPage.getRecords().stream().map(BladeSalesLeadVO::getCreateUser).filter(Objects::nonNull)
+			List<Long> createUserList = pages.getRecords().stream().map(BladeSalesLead::getCreateUser).filter(Objects::nonNull)
 				.distinct().collect(Collectors.toList());
 			//创建人id
-			if (!createUserList.isEmpty()){
+			if (!createUserList.isEmpty()) {
 				userIdList.addAll(createUserList);
 			}
-			List<Long> updateUserList = voPage.getRecords().stream().map(BladeSalesLeadVO::getUpdateUser).filter(Objects::nonNull)
+			List<Long> updateUserList = pages.getRecords().stream().map(BladeSalesLead::getUpdateUser).filter(Objects::nonNull)
 				.distinct().collect(Collectors.toList());
 			//修改人id
-			if (!updateUserList.isEmpty()){
+			if (!updateUserList.isEmpty()) {
 				userIdList.addAll(updateUserList);
 			}
-			if (!userIdList.isEmpty()){
+			if (!userIdList.isEmpty()) {
 				//获取id对应用户数据
 				List<User> userList = userClient.userListGetByIds(userIdList);
 				for (BladeSalesLeadVO item : voPage.getRecords()) {
-					if (!userList.isEmpty()){
+					if (!userList.isEmpty()) {
 						//赋值创建人名称
-						if (ObjectUtils.isNotNull(item.getCreateUser())){
+						if (ObjectUtils.isNotNull(item.getCreateUser())) {
 							userList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst().ifPresent(user -> item.setCreateUserName(user.getRealName()));
 						}
 						//赋值修改人名称
-						if (ObjectUtils.isNotNull(item.getUpdateUser())){
+						if (ObjectUtils.isNotNull(item.getUpdateUser())) {
 							userList.stream().filter(e -> e.getId().equals(item.getUpdateUser())).findFirst().ifPresent(user -> item.setUpdateUserName(user.getRealName()));
 						}
 					}
@@ -186,7 +184,7 @@ public class BladeSalesLeadController extends BladeController {
 	 * 销售线索提交
 	 */
 	@GetMapping("/submitLead")
-	public R submitLead(@RequestParam("id")Long id) {
+	public R submitLead(@RequestParam("id") Long id) {
 		return bladeSalesLeadService.submitLead(id);
 	}
 
@@ -194,7 +192,7 @@ public class BladeSalesLeadController extends BladeController {
 	 * 销售线索撤销
 	 */
 	@GetMapping("/revokeLead")
-	public R revokeLead(@RequestParam("id")Long id) {
+	public R revokeLead(@RequestParam("id") Long id) {
 		return bladeSalesLeadService.revokeLead(id);
 	}
 

+ 15 - 3
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/lead/service/impl/BladeSalesLeadServiceImpl.java

@@ -24,6 +24,7 @@ import com.gubersail.admin.lead.mapper.BladeSalesLeadMapper;
 import com.gubersail.admin.lead.service.IBladeSalesLeadDetailService;
 import com.gubersail.admin.lead.service.IBladeSalesLeadService;
 import com.gubersail.admin.util.BillCodeUtil;
+import com.gubersail.admin.wrapper.SalesLeadWrapper;
 import com.gubersail.dealer.admin.api.claim.entity.BladeClaim;
 import com.gubersail.dealer.admin.api.claim.entity.BladeClaimAttachment;
 import com.gubersail.dealer.admin.api.claim.entity.BladeClaimAudit;
@@ -35,6 +36,8 @@ import org.springblade.common.enums.NumberEnum;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -58,6 +61,8 @@ public class BladeSalesLeadServiceImpl extends ServiceImpl<BladeSalesLeadMapper,
 
 	private final IBladeSalesLeadDetailService bladeSalesLeadDetailService;
 
+	private final IUserClient userClient;
+
 	@Override
 	public IPage<BladeSalesLeadVO> selectBladeSalesLeadPage(IPage<BladeSalesLeadVO> page, BladeSalesLeadVO bladeSalesLead) {
 		return page.setRecords(baseMapper.selectBladeSalesLeadPage(page, bladeSalesLead));
@@ -65,11 +70,18 @@ public class BladeSalesLeadServiceImpl extends ServiceImpl<BladeSalesLeadMapper,
 
 	@Override
 	public BladeSalesLeadVO detail(BladeSalesLead bladeSalesLead) {
-		BladeSalesLeadVO salesLeadVO = new BladeSalesLeadVO();
 		//通过id查询销售线索数据
 		BladeSalesLead salesLead = this.getById(bladeSalesLead.getId());
 		//数据实体类转换
-		BeanUtil.copyProperties(salesLead, salesLeadVO);
+		BladeSalesLeadVO salesLeadVO= SalesLeadWrapper.build().entityVO(salesLead);
+		R<User> createUserR = userClient.userInfoById(salesLead.getCreateUser());
+		if (createUserR.isSuccess() && ObjectUtils.isNotNull(createUserR.getData())){
+			salesLeadVO.setCreateUserName(createUserR.getData().getRealName());
+		}
+		R<User> updateUserR = userClient.userInfoById(salesLead.getUpdateUser());
+		if (updateUserR.isSuccess() && ObjectUtils.isNotNull(updateUserR.getData())){
+			salesLeadVO.setUpdateUserName(updateUserR.getData().getRealName());
+		}
 		//查询销售线索详细数据
 		List<BladeSalesLeadDetail> salesLeadDetailList = bladeSalesLeadDetailService.list(new LambdaQueryWrapper<BladeSalesLeadDetail>()
 			.eq(BladeSalesLeadDetail::getLeadId, salesLead.getId())
@@ -126,7 +138,7 @@ public class BladeSalesLeadServiceImpl extends ServiceImpl<BladeSalesLeadMapper,
 			//批量保存销售线索明细数据
 			bladeSalesLeadDetailService.saveOrUpdateBatch(bladeSalesLead.getSalesLeadDetailList());
 		}
-		return R.data(bladeSalesLead);
+		return R.data(salesLead);
 	}
 
 	@Override

+ 55 - 0
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/wrapper/ClaimWrapper.java

@@ -0,0 +1,55 @@
+package com.gubersail.admin.wrapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gubersail.dealer.admin.api.claim.entity.BladeClaim;
+import com.gubersail.dealer.admin.api.claim.vo.BladeClaimVO;
+import com.gubersail.dealer.admin.api.excel.CorpsDescExportExcel;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.factory.entity.PcBladeClaim;
+import org.springblade.factory.vo.PcBladeBrandAuthorizeVO;
+import org.springblade.factory.vo.PcBladeClaimVO;
+import org.springframework.beans.BeanUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @author :jixinyuan
+ * @date : 2025/9/10
+ */
+public class ClaimWrapper extends BaseEntityWrapper<BladeClaim, BladeClaimVO> {
+
+	public static ClaimWrapper build() {
+		return new ClaimWrapper();
+	}
+
+	@Override
+	public BladeClaimVO entityVO(BladeClaim entity) {
+		if (Objects.isNull(entity)) {
+			return null;
+		}
+		BladeClaimVO bladeClaimVO = new BladeClaimVO();
+		BeanUtils.copyProperties(entity, bladeClaimVO);
+		return bladeClaimVO;
+	}
+
+	public IPage<BladeClaimVO> pageVO(IPage<BladeClaim> page) {
+		if (Objects.isNull(page)) {
+			return null;
+		}
+		IPage<BladeClaimVO> voPage = new Page<>();
+		List<BladeClaimVO> voList = BeanUtil.copy(page.getRecords(),BladeClaimVO.class);
+		voPage.setRecords(voList);
+		voPage.setPages(page.getPages());
+		voPage.setCurrent(page.getCurrent());
+		voPage.setTotal(page.getTotal());
+		voPage.setTotal(page.getTotal());
+		voPage.setSize(page.getSize());
+		return voPage;
+	}
+
+}

+ 51 - 0
blade-service/gubersail-dealer-admin/src/main/java/com/gubersail/admin/wrapper/SalesLeadWrapper.java

@@ -0,0 +1,51 @@
+package com.gubersail.admin.wrapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gubersail.dealer.admin.api.claim.vo.BladeClaimVO;
+import com.gubersail.dealer.admin.api.lead.entity.BladeSalesLead;
+import com.gubersail.dealer.admin.api.lead.vo.BladeSalesLeadVO;
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springframework.beans.BeanUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author :jixinyuan
+ * @date : 2025/9/10
+ */
+public class SalesLeadWrapper extends BaseEntityWrapper<BladeSalesLead, BladeSalesLeadVO> {
+
+	public static SalesLeadWrapper build() {
+		return new SalesLeadWrapper();
+	}
+
+	@Override
+	public BladeSalesLeadVO entityVO(BladeSalesLead entity) {
+		if (Objects.isNull(entity)) {
+			return null;
+		}
+		BladeSalesLeadVO salesLeadVO = new BladeSalesLeadVO();
+		BeanUtils.copyProperties(entity, salesLeadVO);
+		return salesLeadVO;
+	}
+
+	public IPage<BladeSalesLeadVO> pageVO(IPage<BladeSalesLead> page) {
+		if (Objects.isNull(page)) {
+			return null;
+		}
+		IPage<BladeSalesLeadVO> voPage = new Page<>();
+		List<BladeSalesLeadVO> voList = BeanUtil.copy(page.getRecords(),BladeSalesLeadVO.class);
+		voPage.setRecords(voList);
+		voPage.setPages(page.getPages());
+		voPage.setCurrent(page.getCurrent());
+		voPage.setTotal(page.getTotal());
+		voPage.setTotal(page.getTotal());
+		voPage.setSize(page.getSize());
+		return voPage;
+	}
+
+}