doc/ºÓÄϺױÚÌìãå¸Ö»¯²£Á§³§.sql
@@ -61,4 +61,27 @@ ALTER TABLE `product-inventory-management-hbtmblc`.`process_route_item` MODIFY COLUMN `product_model_id` bigint NULL DEFAULT 0 COMMENT '产åid' AFTER `route_id`, MODIFY COLUMN `process_id` bigint NULL DEFAULT 0 COMMENT 'å·¥åºid' AFTER `product_model_id`, ADD COLUMN `process_name` varchar(255) NULL COMMENT 'å·¥åºåç§°' AFTER `process_id`; ADD COLUMN `process_name` varchar(255) NULL COMMENT 'å·¥åºåç§°' AFTER `process_id`; -- ---------------------------- -- Table structure for customer_regions -- ---------------------------- DROP TABLE IF EXISTS `customer_regions`; CREATE TABLE `customer_regions` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主é®ID', `parent_id` bigint NULL DEFAULT NULL COMMENT 'ç¶ç±»ID', `regions_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT 'å°åºåç§°', `tenant_id` bigint NULL DEFAULT NULL COMMENT 'ç§æ·ID', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1; ALTER TABLE `product-inventory-management-hbtmblc`.`customer_regions` COMMENT = '客æ·å°åºè¡¨'; ALTER TABLE `product-inventory-management-hbtmblc`.`customer` ADD COLUMN `regions_id` bigint NULL COMMENT 'å°åºID' AFTER `regions`; src/main/java/com/ruoyi/basic/controller/CustomerController.java
@@ -2,6 +2,7 @@ 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.pojo.Customer; import com.ruoyi.basic.service.ICustomerService; import com.ruoyi.common.utils.poi.ExcelUtil; @@ -9,7 +10,6 @@ import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -33,7 +33,7 @@ * æ¥è¯¢å®¢æ·æ¡£æ¡å表 */ @GetMapping("/list") public IPage<Customer> list(Page<Customer> page, Customer customer) { public IPage<CustomerDto> list(Page<Customer> page, Customer customer) { return customerService.selectCustomerList(page, customer); } @@ -118,10 +118,4 @@ return customerService.customerList(customer); } @GetMapping("/regions") @ApiOperation("è·å客æ·å°åº") public AjaxResult getRegions() { List<String> regionsList = customerService.regionsList(); return AjaxResult.success(regionsList); } } src/main/java/com/ruoyi/basic/controller/CustomerRegionsController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,58 @@ package com.ruoyi.basic.controller; import com.ruoyi.basic.dto.CustomerRegionsTreeDto; import com.ruoyi.basic.pojo.CustomerRegions; import com.ruoyi.basic.service.ICustomerRegionsService; import com.ruoyi.framework.web.domain.AjaxResult; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; /** * <p> * 客æ·å°åºè¡¨ å端æ§å¶å¨ * </p> * * @author deslrey * @since 2026-03-27 */ @RestController @RequestMapping("/customerRegions") public class CustomerRegionsController { @Autowired private ICustomerRegionsService customerRegionsService; @GetMapping("list") @ApiOperation("客æ·å°åº-å表") public AjaxResult customerRegionsList(CustomerRegions customerRegions) { List<CustomerRegionsTreeDto> list = customerRegionsService.customerRegionsList(customerRegions); return AjaxResult.success(list); } @PostMapping("/add") @ApiOperation("客æ·å°åº-æ°å¢") public AjaxResult addCustomerRegions(@RequestBody CustomerRegions customerRegions) { customerRegionsService.addCustomerRegions(customerRegions); return AjaxResult.success(); } @PutMapping("/update") @ApiOperation("客æ·å°åº-æ´æ°") public AjaxResult updateCustomerRegions(@RequestBody CustomerRegions customerRegions) { customerRegionsService.updateCustomerRegions(customerRegions); return AjaxResult.success(); } @DeleteMapping("/{id}") @ApiOperation("客æ·å°åº-å é¤") public AjaxResult delCustomerRegions(@PathVariable Long id) { customerRegionsService.delCustomerRegions(id); return AjaxResult.success(); } } src/main/java/com/ruoyi/basic/dto/CustomerDto.java
@@ -1,6 +1,7 @@ package com.ruoyi.basic.dto; import com.ruoyi.basic.pojo.Customer; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -21,4 +22,10 @@ private List<CustomerFollowUpDto> followUpList; /** * å°åº */ @ApiModelProperty("å°åº") private String regionsName; } src/main/java/com/ruoyi/basic/dto/CustomerRegionsTreeDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,43 @@ package com.ruoyi.basic.dto; import lombok.Data; import java.util.List; /** * <br> * 客æ·å°åºæ å½¢Dto * </br> * * @author deslrey * @version 1.0 * @since 2026/03/27 11:41 */ @Data public class CustomerRegionsTreeDto { /** * ID */ private Long id; /** * ç¶ç±»ID */ private Long parentId; /** * å°åºåç§° */ private String regionsName; /** * å°åºæ ç¾ */ private String label; /** * åå°åº */ private List<CustomerRegionsTreeDto> children; } src/main/java/com/ruoyi/basic/mapper/CustomerRegionsMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,16 @@ package com.ruoyi.basic.mapper; import com.ruoyi.basic.pojo.CustomerRegions; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * <p> * 客æ·å°åºè¡¨ Mapper æ¥å£ * </p> * * @author deslrey * @since 2026-03-27 */ public interface CustomerRegionsMapper extends BaseMapper<CustomerRegions> { } src/main/java/com/ruoyi/basic/pojo/Customer.java
@@ -29,6 +29,12 @@ private Long id; /** * å°åºID */ @ApiModelProperty("å°åºID") private Long regionsId; /** * 客æ·åç§° */ @Excel(name = "客æ·åç§°") @@ -117,7 +123,4 @@ @Excel(name = "弿·è¡å·") private String bankCode; @ApiModelProperty("å°åº") @Excel(name = "å°åº") private String regions; } src/main/java/com/ruoyi/basic/pojo/CustomerRegions.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,45 @@ package com.ruoyi.basic.pojo; import com.baomidou.mybatisplus.annotation.*; import java.io.Serializable; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * <p> * 客æ·å°åºè¡¨ * </p> * * @author deslrey * @since 2026-03-27 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("customer_regions") @ApiModel(value = "CustomerRegions对象", description = "客æ·å°åºè¡¨") public class CustomerRegions implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主é®ID") @TableId(value = "id", type = IdType.AUTO) private Long id; @ApiModelProperty(value = "ç¶ç±»ID") private Long parentId; @ApiModelProperty(value = "å°åºåç§°") private String regionsName; @ApiModelProperty(value = "ç§æ·ID") @TableField(fill = FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/basic/service/ICustomerRegionsService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ package com.ruoyi.basic.service; import com.ruoyi.basic.dto.CustomerRegionsTreeDto; import com.ruoyi.basic.pojo.CustomerRegions; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** * <p> * 客æ·å°åºè¡¨ æå¡ç±» * </p> * * @author deslrey * @since 2026-03-27 */ public interface ICustomerRegionsService extends IService<CustomerRegions> { List<CustomerRegionsTreeDto> customerRegionsList(CustomerRegions customerRegions); void addCustomerRegions(CustomerRegions customerRegions); void updateCustomerRegions(CustomerRegions customerRegions); void delCustomerRegions(Long id); List<Long> regionsChildrenIds(Long regionsId); } src/main/java/com/ruoyi/basic/service/ICustomerService.java
@@ -40,7 +40,7 @@ * @param customer å®¢æ·æ¡£æ¡ * @return å®¢æ·æ¡£æ¡éå */ IPage<Customer> selectCustomerList(Page<Customer> page, Customer customer); IPage<CustomerDto> selectCustomerList(Page<Customer> page, Customer customer); /** * æ°å¢å®¢æ·æ¡£æ¡ @@ -78,7 +78,4 @@ List<Customer> selectCustomerLists(Customer customer); AjaxResult importData(MultipartFile file); List<String> regionsList(); } src/main/java/com/ruoyi/basic/service/impl/CustomerRegionsServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,216 @@ package com.ruoyi.basic.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.dto.CustomerRegionsTreeDto; import com.ruoyi.basic.mapper.CustomerMapper; import com.ruoyi.basic.mapper.CustomerRegionsMapper; import com.ruoyi.basic.pojo.Customer; import com.ruoyi.basic.pojo.CustomerRegions; import com.ruoyi.basic.service.ICustomerRegionsService; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * <p> * 客æ·å°åºè¡¨ æå¡å®ç°ç±» * </p> * * @author deslrey * @since 2026-03-27 */ @Service public class CustomerRegionsServiceImpl extends ServiceImpl<CustomerRegionsMapper, CustomerRegions> implements ICustomerRegionsService { @Autowired private CustomerMapper customerMapper; /** * æ¥è¯¢æ å½¢å°åºå表 */ @Override public List<CustomerRegionsTreeDto> customerRegionsList(CustomerRegions customerRegions) { List<CustomerRegions> allRegions = baseMapper.selectList(null); if (allRegions == null || allRegions.isEmpty()) { return new ArrayList<>(); } Map<Long, CustomerRegionsTreeDto> nodeMap = new HashMap<>(); List<CustomerRegionsTreeDto> allDtoList = new ArrayList<>(); for (CustomerRegions region : allRegions) { CustomerRegionsTreeDto dto = new CustomerRegionsTreeDto(); dto.setId(region.getId()); dto.setParentId(region.getParentId()); dto.setRegionsName(region.getRegionsName()); dto.setLabel(region.getRegionsName()); // ç»ä¸ label åæ®µ dto.setChildren(new ArrayList<>()); nodeMap.put(dto.getId(), dto); allDtoList.add(dto); } List<CustomerRegionsTreeDto> treeList = new ArrayList<>(); for (CustomerRegionsTreeDto node : allDtoList) { Long parentId = node.getParentId(); // å¦ææ¯æ ¹èç¹ (parentId 为 0 æ null) æ æ¾ä¸å°ç¶èç¹ï¼åä½ä¸ºé¡¶çº§èç¹ if (parentId == null || parentId == 0 || !nodeMap.containsKey(parentId)) { treeList.add(node); } else { // å¦åå°å ¶æ·»å å°ç¶èç¹ç children ä¸ nodeMap.get(parentId).getChildren().add(node); } } String keyword = customerRegions != null ? customerRegions.getRegionsName() : null; if (StringUtils.isNotEmpty(keyword)) { return filterTree(treeList, keyword); } return treeList; } /** * éå½è¿æ»¤æ èç¹ */ private List<CustomerRegionsTreeDto> filterTree(List<CustomerRegionsTreeDto> list, String keyword) { List<CustomerRegionsTreeDto> filteredList = new ArrayList<>(); for (CustomerRegionsTreeDto node : list) { // éå½å¤çåèç¹ List<CustomerRegionsTreeDto> filteredChildren = filterTree(node.getChildren(), keyword); node.setChildren(filteredChildren); // 妿å½åèç¹åç§°å å«å ³é®åï¼æè åèç¹è¿æ»¤åä¸ä¸ºç©ºï¼åä¿ç该èç¹ if (node.getRegionsName().contains(keyword) || !filteredChildren.isEmpty()) { filteredList.add(node); } } return filteredList; } /** * æ·»å å°åº */ @Override @Transactional(rollbackFor = Exception.class) public void addCustomerRegions(CustomerRegions customerRegions) { validateRegion(customerRegions); checkUnique(customerRegions); if (baseMapper.insert(customerRegions) <= 0) { throw new ServiceException("æ·»å 失败"); } } /** * ä¿®æ¹å°åº */ @Override @Transactional(rollbackFor = Exception.class) public void updateCustomerRegions(CustomerRegions customerRegions) { if (customerRegions.getId() == null) { throw new ServiceException("ä¿®æ¹å¤±è´¥, IDä¸è½ä¸ºç©º"); } validateRegion(customerRegions); if (customerRegions.getId().equals(customerRegions.getParentId())) { throw new ServiceException("ä¿®æ¹å¤±è´¥, ä¸çº§å°åºä¸è½æ¯èªå·±"); } checkUnique(customerRegions); if (baseMapper.updateById(customerRegions) <= 0) { throw new ServiceException("ä¿®æ¹å¤±è´¥"); } } /** * å é¤å°åº */ @Override @Transactional(rollbackFor = Exception.class) public void delCustomerRegions(Long id) { if (id == null) { throw new ServiceException("å é¤å¤±è´¥, IDä¸è½ä¸ºç©º"); } boolean hasChildren = baseMapper.selectCount(new LambdaQueryWrapper<CustomerRegions>() .eq(CustomerRegions::getParentId, id)) > 0; if (hasChildren) { throw new ServiceException("å é¤å¤±è´¥, 该å°åºä¸åå¨åå°åº"); } boolean isUsedByCustomer = customerMapper.selectCount(new LambdaQueryWrapper<Customer>() .eq(Customer::getRegionsId, id)) > 0; if (isUsedByCustomer) { throw new ServiceException("å é¤å¤±è´¥, 该å°åºå·²è¢«å®¢æ·æ¡£æ¡å¼ç¨"); } if (baseMapper.deleteById(id) <= 0) { throw new ServiceException("å é¤å¤±è´¥, æ°æ®ä¸åå¨"); } } /** * æ¥è¯¢å½åå°åºåå ¶ææåéç ID éå */ @Override public List<Long> regionsChildrenIds(Long regionsId) { List<Long> childIds = new ArrayList<>(); if (regionsId == null) { return childIds; } List<CustomerRegions> allRegions = baseMapper.selectList(null); if (allRegions == null || allRegions.isEmpty()) { return childIds; } childIds.add(regionsId); findAllChildren(allRegions, regionsId, childIds); return childIds; } /** * éå½å°åºæ¹æ³ * * @param allRegions ææå°åºå表 * @param parentId å½åç¶çº§ ID * @param result åæ¾ç»æçéå */ private void findAllChildren(List<CustomerRegions> allRegions, Long parentId, List<Long> result) { for (CustomerRegions region : allRegions) { // 夿 parentId æ¯å¦å¹é if (parentId.equals(region.getParentId())) { result.add(region.getId()); // ç»§ç»é彿¥æ¾è¯¥èç¹çåèç¹ findAllChildren(allRegions, region.getId(), result); } } } private void validateRegion(CustomerRegions region) { if (region == null) { throw new ServiceException("æä½å¤±è´¥, æ°æ®ä¸è½ä¸ºç©º"); } if (StringUtils.isEmpty(region.getRegionsName())) { throw new ServiceException("æä½å¤±è´¥, å°åºåç§°ä¸è½ä¸ºç©º"); } if (region.getParentId() == null) { region.setParentId(0L); } } private void checkUnique(CustomerRegions region) { CustomerRegions existing = baseMapper.selectOne(new LambdaQueryWrapper<CustomerRegions>() .eq(CustomerRegions::getRegionsName, region.getRegionsName()) .eq(CustomerRegions::getParentId, region.getParentId()) .ne(region.getId() != null, CustomerRegions::getId, region.getId())); if (existing != null) { throw new ServiceException("该å±çº§ä¸å·²åå¨å为 [" + region.getRegionsName() + "] çå°åº"); } } } src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -1,8 +1,6 @@ package com.ruoyi.basic.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -15,16 +13,13 @@ import com.ruoyi.basic.pojo.Customer; import com.ruoyi.basic.pojo.CustomerFollowUp; import com.ruoyi.basic.pojo.CustomerFollowUpFile; import com.ruoyi.basic.service.CustomerFollowUpFileService; import com.ruoyi.basic.service.CustomerFollowUpService; import com.ruoyi.basic.service.CustomerReturnVisitService; import com.ruoyi.basic.service.ICustomerService; import com.ruoyi.basic.pojo.CustomerRegions; import com.ruoyi.basic.service.*; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; 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; @@ -35,9 +30,10 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import java.time.LocalDate; 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; @@ -59,6 +55,8 @@ private CustomerFollowUpFileService customerFollowUpFileService; private CustomerReturnVisitService customerReturnVisitService; private final ICustomerRegionsService customerRegionsService; /** * æ¥è¯¢å®¢æ·æ¡£æ¡ @@ -111,73 +109,87 @@ dto.setFollowUpList(followUpDtoList); } // å°åºåç§° CustomerRegions customerRegions = customerRegionsService.getById(customer.getRegionsId()); dto.setRegionsName(customerRegions.getRegionsName()); return dto; } /** * æ¥è¯¢å®¢æ·æ¡£æ¡å表 * * @param customer å®¢æ·æ¡£æ¡ * @return å®¢æ·æ¡£æ¡ * @param page å页对象 * @param customer å®¢æ·æ¥è¯¢æ¡ä»¶ * @return å®¢æ·æ¡£æ¡å页å表 */ @Override public IPage<Customer> selectCustomerList(Page<Customer> page, Customer customer) { // 1. å¤ç空å¼åºæ¯ï¼åæ°æ ¡éªï¼ if (page == null) { page = Page.of(1, 10); // é»è®¤ç¬¬1é¡µï¼æ¯é¡µ10æ¡æ°æ® } if (customer == null) { customer = new Customer(); // é¿å 空对象导è´çNPE } public IPage<CustomerDto> selectCustomerList(Page<Customer> page, Customer customer) { if (page == null) page = Page.of(1, 10); if (customer == null) customer = new Customer(); // 2. æå»ºæ¥è¯¢æ¡ä»¶ï¼å¢å¼ºç©ºå¼å®å ¨ï¼ LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<>(); String customerName = customer.getCustomerName(); String customerType = customer.getCustomerType(); Long regionsId = customer.getRegionsId(); if (StringUtils.isNotBlank(customerName)) { queryWrapper.like(Customer::getCustomerName, customerName); } if (StringUtils.isNotBlank(customerType)) { queryWrapper.like(Customer::getCustomerType, customerType); queryWrapper.eq(Customer::getCustomerType, customerType); } // 3. æ§è¡å页æ¥è¯¢ï¼ä¿çåé¡µå æ°æ®ï¼ if (regionsId != null) { // è°ç¨ regionsService è·åå½åå°åºåå ¶ææå代ç ID éå List<Long> allRegionsIds = customerRegionsService.regionsChildrenIds(regionsId); if (!CollectionUtils.isEmpty(allRegionsIds)) { queryWrapper.in(Customer::getRegionsId, allRegionsIds); } else { queryWrapper.eq(Customer::getRegionsId, regionsId); } } IPage<Customer> customerPage = customerMapper.selectPage(page, queryWrapper); // 4. æ°æ®å¤çï¼å¢å¼ºç©ºå¼å®å ¨ & 代ç å¯è¯»æ§ï¼ List<Customer> processedList = customerPage.getRecords().stream() .filter(Objects::nonNull) // è¿æ»¤ç©ºå¯¹è±¡ï¼é¿å åç»æä½NPEï¼ .peek(c -> { // å®å ¨è·ååæ®µï¼é¿å null弿¼æ¥ List<CustomerDto> dtoList = customerPage.getRecords().stream() .filter(Objects::nonNull) .map(c -> { CustomerDto dto = new CustomerDto(); BeanUtils.copyProperties(c, dto); // å°åçµè¯æ¼æ¥ String address = StringUtils.defaultString(c.getCompanyAddress(), ""); String phone = StringUtils.defaultString(c.getCompanyPhone(), ""); c.setAddressPhone(address + "(" + phone + ")"); dto.setAddressPhone(address + "(" + phone + ")"); // å¡«å å°åºåç§° if (c.getRegionsId() != null) { CustomerRegions regions = customerRegionsService.getById(c.getRegionsId()); if (regions != null) { dto.setRegionsName(regions.getRegionsName()); } } // æ¥è¯¢ææ°çè·è¿è®°å½ CustomerFollowUp followUp = customerFollowUpService.getOne( new LambdaQueryWrapper<CustomerFollowUp>() .eq(CustomerFollowUp::getCustomerId, c.getId()) .orderByDesc(CustomerFollowUp::getFollowUpTime) .last("LIMIT 1") ); if (followUp != null) { c.setFollowUpLevel(followUp.getFollowUpLevel()); c.setFollowUpTime( Date.from( followUp.getFollowUpTime().atZone(ZoneId.systemDefault()).toInstant() ) ); } // CustomerFollowUp followUp = customerFollowUpService.getOne( // new LambdaQueryWrapper<CustomerFollowUp>() // .eq(CustomerFollowUp::getCustomerId, c.getId()) // .orderByDesc(CustomerFollowUp::getFollowUpTime) // .last("LIMIT 1") // ); // // if (followUp != null) { // dto.setFollowUpLevel(followUp.getFollowUpLevel()); // dto.setFollowUpTime(Date.from(followUp.getFollowUpTime().atZone(ZoneId.systemDefault()).toInstant())); // } return dto; }) .collect(Collectors.toList()); // 5. æ´æ°åé¡µç»æä¸çæ°æ®ï¼ä¿æå页信æ¯å®æ´ï¼ IPage<Customer> resultPage = new Page<>(customerPage.getCurrent(), customerPage.getSize(), customerPage.getTotal()); resultPage.setRecords(processedList); IPage<CustomerDto> resultPage = new Page<>(customerPage.getCurrent(), customerPage.getSize(), customerPage.getTotal()); resultPage.setRecords(dtoList); return customerPage; // è¿åå å«å页信æ¯çIPage对象 return resultPage; } /** @@ -274,17 +286,6 @@ entry -> underlineToCamel(entry.getKey()), Map.Entry::getValue)) ).collect(Collectors.toList()); } @Override public List<String> regionsList() { return this.baseMapper.selectObjs(new QueryWrapper<Customer>() .select("DISTINCT regions") .isNotNull("regions") .ne("regions", "") ).stream() .map(Object::toString) .collect(Collectors.toList()); } /** src/main/resources/mapper/basic/CustomerRegionsMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.basic.mapper.CustomerRegionsMapper"> <!-- éç¨æ¥è¯¢æ å°ç»æ --> <resultMap id="BaseResultMap" type="com.ruoyi.basic.pojo.CustomerRegions"> <id column="id" property="id" /> <result column="parent_id" property="parentId" /> <result column="regions_name" property="regionsName" /> <result column="tenant_id" property="tenantId" /> </resultMap> </mapper>