src/main/java/com/ruoyi/basic/controller/CustomerPrivateController.java
@@ -1,28 +1,21 @@ package com.ruoyi.basic.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.CustomerDto; import com.ruoyi.basic.dto.CustomerPrivateDto; import com.ruoyi.basic.dto.CustomerPrivatePoolDto; import com.ruoyi.basic.pojo.Customer; import com.ruoyi.basic.pojo.CustomerPrivate; import com.ruoyi.basic.service.CustomerPrivatePoolService; import com.ruoyi.basic.service.CustomerPrivateService; import com.ruoyi.basic.service.ICustomerService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.framework.web.domain.R; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; import static com.ruoyi.framework.web.domain.AjaxResult.success; /** * <p> @@ -33,6 +26,7 @@ * @since 2026-04-17 10:39:09 */ @RestController @Api(tags = "客户(私海)档案") @RequestMapping("/customerPrivate") public class CustomerPrivateController { @Autowired @@ -53,6 +47,17 @@ return R.ok(customerPrivateService.delete(ids)); } /** * 将私海客户扔回公海重新分配 * @param ids * @return */ @PostMapping("/throwCustomer") @ApiOperation("将私海客户扔回公海重新分配") public R throwCustomer(@RequestBody List<Long> ids) { return R.ok( customerPrivatePoolService.throwCustomer(ids)); } /** * 导入客户档案 src/main/java/com/ruoyi/basic/pojo/Customer.java
@@ -1,15 +1,14 @@ package com.ruoyi.basic.pojo; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import org.checkerframework.checker.units.qual.A; /** * 客户档案对象 customer @@ -138,7 +137,7 @@ private String agent; @ApiModelProperty(value = "创建用户") @TableField(fill = FieldFill.INSERT) private Integer createUser; private Long createUser; @TableField(fill = FieldFill.INSERT) private Long deptId; src/main/java/com/ruoyi/basic/pojo/CustomerPrivate.java
@@ -1,20 +1,16 @@ package com.ruoyi.basic.pojo; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDate; import java.util.Date; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import java.io.Serializable; import java.time.LocalDateTime; import java.util.Date; /** * <p> @@ -125,7 +121,7 @@ @ApiModelProperty("跟进时间") @TableField(exist = false) private Date followUpTime; private LocalDateTime followUpTime; @TableField(exist = false) src/main/java/com/ruoyi/basic/service/CustomerPrivatePoolService.java
@@ -2,10 +2,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.CustomerPrivatePoolDto; import com.ruoyi.basic.pojo.Customer; import com.ruoyi.basic.pojo.CustomerPrivatePool; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.basic.dto.CustomerPrivatePoolDto; import com.ruoyi.basic.pojo.CustomerPrivatePool; import java.util.List; @@ -36,4 +35,6 @@ List<CustomerPrivatePoolDto> selectCustomerPrivatePoolDtoListByIds(List<Long> ids); List<CustomerPrivatePoolDto> selectCustomerPrivatePoolDtoLists(CustomerPrivatePoolDto customerPrivatePoolDto); Boolean throwCustomer(List<Long> ids); } src/main/java/com/ruoyi/basic/service/impl/CustomerPrivatePoolServiceImpl.java
@@ -6,18 +6,15 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.basic.dto.CustomerDto; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.dto.CustomerFollowUpDto; import com.ruoyi.basic.dto.CustomerPrivatePoolDto; import com.ruoyi.basic.mapper.CustomerPrivateMapper; import com.ruoyi.basic.pojo.*; import com.ruoyi.basic.mapper.CustomerPrivatePoolMapper; import com.ruoyi.basic.pojo.*; import com.ruoyi.basic.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.sales.mapper.SalesLedgerMapper; import com.ruoyi.sales.pojo.SalesLedger; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -61,7 +58,7 @@ public IPage<CustomerPrivatePoolDto> listPage(Page<CustomerPrivatePoolDto> page, CustomerPrivatePoolDto customerPrivatePoolDto) { IPage<CustomerPrivatePoolDto> customerPrivatePoolDtoIPage = customerPrivatePoolMapper.listPage(page, customerPrivatePoolDto); List<Long> customerIds = customerPrivatePoolDtoIPage.getRecords().stream() .map(CustomerPrivatePoolDto::getId ) .map(CustomerPrivatePoolDto::getId) .filter(Objects::nonNull) .collect(Collectors.toList()); @@ -231,4 +228,24 @@ return customerPrivatePoolMapper.selectInfos(); } @Override public Boolean throwCustomer(List<Long> ids) { for (Long id : ids) { CustomerPrivatePoolDto customerPrivatePoolDto = customerPrivatePoolMapper.selectInfo(id); if (ObjectUtils.isNotEmpty(customerPrivatePoolDto)) { CustomerPrivate customerPrivate = customerPrivateMapper.selectById(customerPrivatePoolDto.getCustomerId()); Customer customer = new Customer(); BeanUtils.copyProperties(customerPrivate, customer); customer.setId(null); customer.setUsageUser(SecurityUtils.getLoginUser().getUserId()); customer.setUsageStatus(1L); customerService.save(customer); customerPrivatePoolDto.setCustomerId(customer.getId()); customerPrivatePoolDto.setType(1L); customerPrivatePoolMapper.updateById(customerPrivatePoolDto); } } return true; } } src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -8,13 +8,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.dto.CustomerDto; import com.ruoyi.basic.dto.CustomerFollowUpDto; import com.ruoyi.basic.dto.CustomerPrivatePoolDto; import com.ruoyi.basic.mapper.CustomerMapper; import com.ruoyi.basic.mapper.CustomerPrivatePoolMapper; import com.ruoyi.basic.pojo.Customer; import com.ruoyi.basic.pojo.CustomerFollowUp; import com.ruoyi.basic.pojo.CustomerFollowUpFile; import com.ruoyi.basic.pojo.CustomerPrivatePool; import com.ruoyi.basic.service.CustomerFollowUpFileService; import com.ruoyi.basic.service.CustomerFollowUpService; @@ -25,20 +22,20 @@ import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.security.LoginUser; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.sales.mapper.SalesLedgerMapper; import com.ruoyi.sales.pojo.SalesLedger; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import java.time.ZoneId; import java.util.*; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @@ -185,7 +182,7 @@ if (!salesLedgers.isEmpty()) { throw new RuntimeException("客户档案下有销售合同,请先删除销售合同"); } List<CustomerPrivatePool> customerPrivatePools = customerPrivatePoolMapper.selectList(new QueryWrapper<CustomerPrivatePool>().lambda().in(CustomerPrivatePool::getCustomerId, idList)); List<CustomerPrivatePool> customerPrivatePools = customerPrivatePoolMapper.selectList(new QueryWrapper<CustomerPrivatePool>().lambda().in(CustomerPrivatePool::getCustomerId, idList).eq(CustomerPrivatePool::getDeleteFlag,0L)); if (!customerPrivatePools.isEmpty()) { throw new RuntimeException("客户档案下有客户私海,请先收回私海数据"); } src/main/java/com/ruoyi/basic/service/impl/ProductModelServiceImpl.java
@@ -163,4 +163,8 @@ throw new ServiceException("导入失败"); } } public Boolean checkProductModelExist(Long productId, String model) { return true; } }