Browse Source

增加地址簿导入

2391363834@qq.com 9 giờ trước cách đây
mục cha
commit
8f14b33215

+ 30 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/controller/BizAddressBookController.java

@@ -3,6 +3,10 @@ package com.ruoyi.logistics.controller;
 import java.util.List;
 import java.io.IOException;
 import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.domain.dto.DeptImportDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -21,6 +25,7 @@ import com.ruoyi.common.core.web.controller.BaseController;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.web.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * PC-地址簿管理
@@ -110,4 +115,29 @@ public class BizAddressBookController extends BaseController
     public AjaxResult getDefaultAddress() {
         return success(bizAddressBookService.selectDefaultAddressBook());
     }
+
+
+    /**
+     * 导入地址簿
+     */
+    @RequiresPermissions("system:book:add")
+    @Log(title = "导入地址簿", businessType = BusinessType.IMPORT)
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file) throws IOException {
+        ExcelUtil<BizAddressBook> util = new ExcelUtil<>(BizAddressBook.class);
+        List<BizAddressBook> bookList = util.importExcel(file.getInputStream());
+        String message = bizAddressBookService.importBook(bookList);
+        return success(message);
+    }
+
+
+    /**
+     * 下载地址簿导入模板
+     */
+    @RequiresPermissions("system:dept:add")
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        ExcelUtil<BizAddressBook> util = new ExcelUtil<BizAddressBook>(BizAddressBook.class);
+        util.importTemplateExcel(response, "地址簿数据");
+    }
 }

+ 41 - 9
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/mapper/BizAddressBookMapper.java

@@ -1,19 +1,21 @@
 package com.ruoyi.logistics.mapper;
 
 import java.util.List;
+import java.util.Set;
+
 import com.ruoyi.logistics.domain.BizAddressBook;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 地址簿管理Mapper接口
- * 
+ *
  * @author RuiJing
  * @date 2026-01-29
  */
-public interface BizAddressBookMapper 
-{
+public interface BizAddressBookMapper {
     /**
      * 查询地址簿管理
-     * 
+     *
      * @param addressId 地址簿管理主键
      * @return 地址簿管理
      */
@@ -21,7 +23,7 @@ public interface BizAddressBookMapper
 
     /**
      * 查询地址簿管理列表
-     * 
+     *
      * @param bizAddressBook 地址簿管理
      * @return 地址簿管理集合
      */
@@ -29,7 +31,7 @@ public interface BizAddressBookMapper
 
     /**
      * 新增地址簿管理
-     * 
+     *
      * @param bizAddressBook 地址簿管理
      * @return 结果
      */
@@ -37,7 +39,7 @@ public interface BizAddressBookMapper
 
     /**
      * 修改地址簿管理
-     * 
+     *
      * @param bizAddressBook 地址簿管理
      * @return 结果
      */
@@ -45,7 +47,7 @@ public interface BizAddressBookMapper
 
     /**
      * 删除地址簿管理
-     * 
+     *
      * @param addressId 地址簿管理主键
      * @return 结果
      */
@@ -53,7 +55,7 @@ public interface BizAddressBookMapper
 
     /**
      * 批量删除地址簿管理
-     * 
+     *
      * @param addressIds 需要删除的数据主键集合
      * @return 结果
      */
@@ -61,6 +63,7 @@ public interface BizAddressBookMapper
 
     /**
      * 更新用户默认收货地址
+     *
      * @param userId
      * @return
      */
@@ -68,7 +71,36 @@ public interface BizAddressBookMapper
 
     /**
      * 获取登录用户默认地址
+     *
      * @return
      */
     public BizAddressBook selectDefaultAddressBook(BizAddressBook bizAddressBook);
+
+    /**
+     * 根据条件查询 地址
+     *
+     * @param contactNameSet  联系人集合
+     * @param contactPhoneSet 联系电话集合
+     * @param provinceNameSet 省集合
+     * @param cityNameSet     市集合
+     * @param countyNameSet   区集合
+     * @param addressSet      详细地址集合
+     * @param defaultFlageSet 默认状态集合
+     * @return
+     */
+    List<BizAddressBook> getBizAddressBookList(@Param("contactNameSet") Set<String> contactNameSet,
+                                               @Param("contactPhoneSet") Set<String> contactPhoneSet,
+                                               @Param("provinceNameSet") Set<String> provinceNameSet,
+                                               @Param("cityNameSet") Set<String> cityNameSet,
+                                               @Param("countyNameSet") Set<String> countyNameSet,
+                                               @Param("addressSet") Set<String> addressSet,
+                                               @Param("defaultFlageSet") Set<String> defaultFlageSet);
+
+    /**
+     * 批量插入
+     *
+     * @param distinctBizAddressBookList
+     */
+    void insertBatch(List<BizAddressBook> distinctBizAddressBookList);
+
 }

+ 9 - 0
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/IBizAddressBookService.java

@@ -64,4 +64,13 @@ public interface IBizAddressBookService
      * @return
      */
     public BizAddressBook selectDefaultAddressBook();
+
+
+    /**
+     * 导入地址簿管理数据
+     *
+     * @param bookList 地址簿管理数据列表
+     * @return 结果
+     */
+    String importBook(List<BizAddressBook> bookList);
 }

+ 123 - 22
jd-logistics-modules/jd-logistics-system/src/main/java/com/ruoyi/logistics/service/impl/BizAddressBookServiceImpl.java

@@ -1,9 +1,11 @@
 package com.ruoyi.logistics.service.impl;
 
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.DateUtils;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.system.api.model.LoginUser;
 import org.apache.commons.collections4.CollectionUtils;
@@ -15,50 +17,46 @@ import com.ruoyi.logistics.service.IBizAddressBookService;
 
 /**
  * 地址簿管理Service业务层处理
- * 
+ *
  * @author RuiJing
  * @date 2026-01-29
  */
 @Service
-public class BizAddressBookServiceImpl implements IBizAddressBookService 
-{
+public class BizAddressBookServiceImpl implements IBizAddressBookService {
     @Autowired
     private BizAddressBookMapper bizAddressBookMapper;
 
     /**
      * 查询地址簿管理
-     * 
+     *
      * @param addressId 地址簿管理主键
      * @return 地址簿管理
      */
     @Override
-    public BizAddressBook selectBizAddressBookByAddressId(Long addressId)
-    {
+    public BizAddressBook selectBizAddressBookByAddressId(Long addressId) {
         return bizAddressBookMapper.selectBizAddressBookByAddressId(addressId);
     }
 
     /**
      * 查询地址簿管理列表
-     * 
+     *
      * @param bizAddressBook 地址簿管理
      * @return 地址簿管理
      */
     @Override
-    public List<BizAddressBook> selectBizAddressBookList(BizAddressBook bizAddressBook)
-    {
+    public List<BizAddressBook> selectBizAddressBookList(BizAddressBook bizAddressBook) {
         bizAddressBook.setUserId(SecurityUtils.getLoginUser().getUserid());
         return bizAddressBookMapper.selectBizAddressBookList(bizAddressBook);
     }
 
     /**
      * 新增地址簿管理
-     * 
+     *
      * @param bizAddressBook 地址簿管理
      * @return 结果
      */
     @Override
-    public Long insertBizAddressBook(BizAddressBook bizAddressBook)
-    {
+    public Long insertBizAddressBook(BizAddressBook bizAddressBook) {
         LoginUser loginUser = SecurityUtils.getLoginUser();
 
         bizAddressBook.setUserId(loginUser.getUserid());
@@ -83,13 +81,12 @@ public class BizAddressBookServiceImpl implements IBizAddressBookService
 
     /**
      * 修改地址簿管理
-     * 
+     *
      * @param bizAddressBook 地址簿管理
      * @return 结果
      */
     @Override
-    public int updateBizAddressBook(BizAddressBook bizAddressBook)
-    {
+    public int updateBizAddressBook(BizAddressBook bizAddressBook) {
         LoginUser loginUser = SecurityUtils.getLoginUser();
 
         bizAddressBook.setCreateTime(DateUtils.getNowDate());
@@ -111,25 +108,23 @@ public class BizAddressBookServiceImpl implements IBizAddressBookService
 
     /**
      * 批量删除地址簿管理
-     * 
+     *
      * @param addressIds 需要删除的地址簿管理主键
      * @return 结果
      */
     @Override
-    public int deleteBizAddressBookByAddressIds(Long[] addressIds)
-    {
+    public int deleteBizAddressBookByAddressIds(Long[] addressIds) {
         return bizAddressBookMapper.deleteBizAddressBookByAddressIds(addressIds);
     }
 
     /**
      * 删除地址簿管理信息
-     * 
+     *
      * @param addressId 地址簿管理主键
      * @return 结果
      */
     @Override
-    public int deleteBizAddressBookByAddressId(Long addressId)
-    {
+    public int deleteBizAddressBookByAddressId(Long addressId) {
         return bizAddressBookMapper.deleteBizAddressBookByAddressId(addressId);
     }
 
@@ -142,4 +137,110 @@ public class BizAddressBookServiceImpl implements IBizAddressBookService
         BizAddressBook bizAddressBook = bizAddressBookMapper.selectDefaultAddressBook(query);
         return bizAddressBook;
     }
+
+
+    /**
+     * 导入地址簿数据
+     *
+     * @param bookList 地址簿列表
+     */
+    @Override
+    public String importBook(List<BizAddressBook> bookList) {
+        if (StringUtils.isNull(bookList) || bookList.isEmpty()) {
+            throw new ServiceException("导入地址数据不能为空!");
+        }
+
+        // 获取当前登陆人信息
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        Long userid = loginUser.getUserid();
+        Long deptId = loginUser.getSysUser().getDeptId();
+        Date nowDate = DateUtils.getNowDate();
+        String username = loginUser.getUsername();
+
+        // 对导入的地址进行判断,联系人,联系电话,省市区信息必须存在,是否默认字段允许为空(默认为否),如果不为空只能有一个默认
+        bookList.forEach(book -> {
+            // 先判断 联系人,联系电话,省市区信息是否为空
+            if (StringUtils.isEmpty(book.getContactName())
+                    || StringUtils.isEmpty(book.getContactPhone())
+                    || StringUtils.isEmpty(book.getProvinceName())
+                    || StringUtils.isEmpty(book.getCityName())
+                    || StringUtils.isEmpty(book.getCountyName())
+                    || StringUtils.isEmpty(book.getDetailedAddress())
+            ) {
+                throw new ServiceException("导入地址数据存在空值,请检查!");
+            }
+            // 判断 是否默认字段是否为空,如果不为空只能有一个默认,并根据传值进行发替换
+            String defaultFlag = book.getDefaultFlag();
+            if (defaultFlag == null || defaultFlag.isEmpty() || Objects.equals(defaultFlag, "否")) {
+                book.setDefaultFlag("0");
+            }
+            if (Objects.equals(defaultFlag, "是")) {
+                book.setDefaultFlag("1");
+            }
+
+            // 向地址簿中添加登陆人信息
+            book.setUserId(userid);
+            book.setDeptId(deptId);
+            book.setCreateTime(nowDate);
+            book.setCreateBy(username);
+        });
+        // 再次判断,是否存在多个默认
+        if (bookList.stream().filter(book -> Objects.equals(book.getDefaultFlag(), "1")).count() > 1) {
+            throw new ServiceException("导入地址数据存在多个默认地址,请检查!");
+        }
+        // 先对传入的数据进行去重
+        List<BizAddressBook> distinctBizAddressBookList = bookList.stream().distinct().collect(Collectors.toList());
+        // 判断如果存在重复的数据的处理方式(是否更新)
+        // 如果更新的话会修改原来数据的创建时间和创建人信息,不会删除重新保存,避免原来绑定的数据丢失
+        // 如果是不进行保存
+        // 先获取传入的数据的 联系人集合,联系电话集合,省市区集合,详细地址集合,并和作为条件查询是否存在符合条件的数据
+        Set<String> contactNameSet = distinctBizAddressBookList.stream().map(BizAddressBook::getContactName).collect(Collectors.toSet());
+        Set<String> contactPhoneSet = distinctBizAddressBookList.stream().map(BizAddressBook::getContactPhone).collect(Collectors.toSet());
+        Set<String> provinceNameSet = distinctBizAddressBookList.stream().map(BizAddressBook::getProvinceName).collect(Collectors.toSet());
+        Set<String> cityNametoSet = distinctBizAddressBookList.stream().map(BizAddressBook::getCityName).collect(Collectors.toSet());
+        Set<String> countyNameSet = distinctBizAddressBookList.stream().map(BizAddressBook::getCountyName).collect(Collectors.toSet());
+        Set<String> addressSet = distinctBizAddressBookList.stream().map(BizAddressBook::getDetailedAddress).collect(Collectors.toSet());
+        Set<String> defaultFlagetoSet = distinctBizAddressBookList.stream().map(BizAddressBook::getDefaultFlag).collect(Collectors.toSet());
+
+        // 查询是否存在符合条件的数据
+        List<BizAddressBook> bizAddressBookList = bizAddressBookMapper.getBizAddressBookList(contactNameSet, contactPhoneSet, provinceNameSet, cityNametoSet, countyNameSet, addressSet, defaultFlagetoSet);
+        // 创建一个集合,用于存储最终需要保存的数据
+        List<BizAddressBook> bizAddressBooks;
+        // 如果查询结果为空的话就直接保存
+        if (bizAddressBookList.isEmpty()) {
+            bizAddressBooks = distinctBizAddressBookList;
+        } else {
+            bizAddressBooks = new ArrayList<>();
+
+            // 将传入的数据根据查询到的数据进行过滤,过滤出查询到的数据中不存在的数据,然后进行保存
+            bookList.forEach(book -> {
+                // 从查询到的数据中过滤和当前遍历的数据完全一致的数据
+                long count = bizAddressBookList.stream().filter(
+                        b -> Objects.equals(b.getContactName(), book.getContactName())
+                                && Objects.equals(b.getContactPhone(), book.getContactPhone())
+                                && Objects.equals(b.getProvinceName(), book.getProvinceName())
+                                && Objects.equals(b.getCityName(), book.getCityName())
+                                && Objects.equals(b.getCountyName(), book.getCountyName())
+                                && Objects.equals(b.getDetailedAddress(), book.getDetailedAddress())
+                ).count();
+                // 如果一致的数据条数为0,则添加到需要保存的集合中,后续进行保存
+                if (count == 0) {
+                    bizAddressBooks.add(book);
+                }
+            });
+        }
+
+
+        int bookSize = bookList.size();
+        if (!bizAddressBooks.isEmpty()) {
+            int addressSize = bizAddressBooks.size();
+            bizAddressBookMapper.insertBatch(bizAddressBooks);
+            if (addressSize == bookSize) {
+                return "导入成功,本次一共导入"+ bookSize +"条数据,成功导入"+ addressSize +"条数据,导入失败0条数据";
+            } else {
+                return "导入成功,本次一共导入"+ bookSize +"条数据,成功导入"+ addressSize +"条数据,导入失败"+(bookSize - addressSize)+"条数据(失败原因可能为该联系人下面存在相同地址)";
+            }
+        }
+        return "导入失败,本次一共导入"+ bookSize +"条数据,成功导入0条数据,导入失败"+ bookSize +"条数据(失败原因可能为该联系人下面存在相同地址)";
+    }
 }

+ 120 - 44
jd-logistics-modules/jd-logistics-system/src/main/resources/mapper/logistics/BizAddressBookMapper.xml

@@ -1,59 +1,72 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.logistics.mapper.BizAddressBookMapper">
-    
+
     <resultMap type="com.ruoyi.logistics.domain.BizAddressBook" id="BizAddressBookResult">
-        <result property="addressId"    column="address_id"    />
-        <result property="companyName"    column="company_name"    />
-        <result property="contactName"    column="contact_name"    />
-        <result property="contactPhone"    column="contact_phone"    />
-        <result property="provinceName"    column="province_name"    />
-        <result property="cityName"    column="city_name"    />
-        <result property="countyName"    column="county_name"    />
-        <result property="detailedAddress"    column="detailed_address"    />
-        <result property="defaultFlag"    column="default_flag"    />
-        <result property="deptId"    column="dept_id"    />
-        <result property="userId"    column="user_id"    />
-        <result property="remark"    column="remark"    />
-        <result property="delFlag"    column="del_flag"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="updateBy"    column="update_by"    />
+        <result property="addressId" column="address_id"/>
+        <result property="companyName" column="company_name"/>
+        <result property="contactName" column="contact_name"/>
+        <result property="contactPhone" column="contact_phone"/>
+        <result property="provinceName" column="province_name"/>
+        <result property="cityName" column="city_name"/>
+        <result property="countyName" column="county_name"/>
+        <result property="detailedAddress" column="detailed_address"/>
+        <result property="defaultFlag" column="default_flag"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="userId" column="user_id"/>
+        <result property="remark" column="remark"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="updateBy" column="update_by"/>
     </resultMap>
 
     <sql id="selectBizAddressBookVo">
-        select address_id, company_name, contact_name, contact_phone, province_name, city_name, county_name, detailed_address, default_flag, dept_id, user_id, remark, del_flag, create_time, update_time, create_by, update_by from biz_address_book
+        select address_id, company_name, contact_name, contact_phone, province_name, city_name, county_name,
+        detailed_address, default_flag, dept_id, user_id, remark, del_flag, create_time, update_time, create_by,
+        update_by from biz_address_book
     </sql>
 
-    <select id="selectBizAddressBookList" parameterType="com.ruoyi.logistics.domain.BizAddressBook" resultMap="BizAddressBookResult">
+    <select id="selectBizAddressBookList" parameterType="com.ruoyi.logistics.domain.BizAddressBook"
+            resultMap="BizAddressBookResult">
         <include refid="selectBizAddressBookVo"/>
-        <where>  
-            <if test="companyName != null  and companyName != ''"> and company_name like concat('%', #{companyName}, '%')</if>
-            <if test="contactName != null  and contactName != ''"> and contact_name like concat('%', #{contactName}, '%')</if>
-            <if test="contactPhone != null  and contactPhone != ''"> and contact_phone = #{contactPhone}</if>
-            <if test="provinceName != null  and provinceName != ''"> and province_name like concat('%', #{provinceName}, '%')</if>
-            <if test="cityName != null  and cityName != ''"> and city_name like concat('%', #{cityName}, '%')</if>
-            <if test="countyName != null  and countyName != ''"> and county_name like concat('%', #{countyName}, '%')</if>
-            <if test="detailedAddress != null  and detailedAddress != ''"> and detailed_address = #{detailedAddress}</if>
-            <if test="defaultFlag != null  and defaultFlag != ''"> and default_flag = #{defaultFlag}</if>
-            <if test="deptId != null "> and dept_id = #{deptId}</if>
-            <if test="userId != null "> and user_id = #{userId}</if>
-            <if test="searchKeyword != null and searchKeyword != ''"> and (contact_name like concat('%', #{searchKeyword}, '%') or
-                                                                            contact_phone like concat('%', #{searchKeyword}, '%') or
-                                                                            detailed_address like concat('%', #{searchKeyword}, '%'))</if>
+        <where>
+            <if test="companyName != null  and companyName != ''">and company_name like concat('%', #{companyName},
+                '%')
+            </if>
+            <if test="contactName != null  and contactName != ''">and contact_name like concat('%', #{contactName},
+                '%')
+            </if>
+            <if test="contactPhone != null  and contactPhone != ''">and contact_phone = #{contactPhone}</if>
+            <if test="provinceName != null  and provinceName != ''">and province_name like concat('%', #{provinceName},
+                '%')
+            </if>
+            <if test="cityName != null  and cityName != ''">and city_name like concat('%', #{cityName}, '%')</if>
+            <if test="countyName != null  and countyName != ''">and county_name like concat('%', #{countyName}, '%')
+            </if>
+            <if test="detailedAddress != null  and detailedAddress != ''">and detailed_address = #{detailedAddress}</if>
+            <if test="defaultFlag != null  and defaultFlag != ''">and default_flag = #{defaultFlag}</if>
+            <if test="deptId != null ">and dept_id = #{deptId}</if>
+            <if test="userId != null ">and user_id = #{userId}</if>
+            <if test="searchKeyword != null and searchKeyword != ''">and (contact_name like concat('%',
+                #{searchKeyword}, '%') or
+                contact_phone like concat('%', #{searchKeyword}, '%') or
+                detailed_address like concat('%', #{searchKeyword}, '%'))
+            </if>
         </where>
         order by default_flag desc, create_time desc
     </select>
-    
+
     <select id="selectBizAddressBookByAddressId" parameterType="Long" resultMap="BizAddressBookResult">
         <include refid="selectBizAddressBookVo"/>
         where address_id = #{addressId}
     </select>
 
-    <insert id="insertBizAddressBook" parameterType="com.ruoyi.logistics.domain.BizAddressBook" useGeneratedKeys="true" keyProperty="addressId">
+    <insert id="insertBizAddressBook" parameterType="com.ruoyi.logistics.domain.BizAddressBook" useGeneratedKeys="true"
+            keyProperty="addressId">
         insert into biz_address_book
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="companyName != null">company_name,</if>
@@ -72,7 +85,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateTime != null">update_time,</if>
             <if test="createBy != null">create_by,</if>
             <if test="updateBy != null">update_by,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="companyName != null">#{companyName},</if>
             <if test="contactName != null">#{contactName},</if>
@@ -90,9 +103,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateTime != null">#{updateTime},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="updateBy != null">#{updateBy},</if>
-         </trim>
+        </trim>
     </insert>
 
+
     <update id="updateBizAddressBook" parameterType="com.ruoyi.logistics.domain.BizAddressBook">
         update biz_address_book
         <trim prefix="SET" suffixOverrides=",">
@@ -121,7 +135,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <delete id="deleteBizAddressBookByAddressIds" parameterType="String">
-        delete from biz_address_book where address_id in 
+        delete from biz_address_book where address_id in
         <foreach item="addressId" collection="array" open="(" separator="," close=")">
             #{addressId}
         </foreach>
@@ -131,11 +145,73 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         update biz_address_book set default_flag = '0' where user_id = #{userId} and default_flag = 1
     </update>
 
-    <select id="selectDefaultAddressBook" parameterType="com.ruoyi.logistics.domain.BizAddressBook" resultMap="BizAddressBookResult">
+    <select id="selectDefaultAddressBook" parameterType="com.ruoyi.logistics.domain.BizAddressBook"
+            resultMap="BizAddressBookResult">
         <include refid="selectBizAddressBookVo"/>
         <where>
-            <if test="userId != null "> and user_id = #{userId}</if>
-            <if test="defaultFlag != null "> and default_flag = #{defaultFlag}</if>
+            <if test="userId != null ">and user_id = #{userId}</if>
+            <if test="defaultFlag != null ">and default_flag = #{defaultFlag}</if>
         </where>
     </select>
+    <select id="getBizAddressBookList" resultType="com.ruoyi.logistics.domain.BizAddressBook" resultMap="BizAddressBookResult">
+        select address_id, company_name, contact_name, contact_phone, province_name, city_name, county_name,
+        detailed_address, default_flag, dept_id, user_id, remark, del_flag, create_time, update_time, create_by,
+        update_by from biz_address_book
+        <where>
+            1=1
+            <if test="contactNameSet != null and contactNameSet.size() > 0">
+                <foreach item="contactName" collection="contactNameSet" separator="," open="and contact_name in ("
+                         close=")">
+                    #{contactName}
+                </foreach>
+            </if>
+            <if test="contactPhoneSet != null and contactPhoneSet.size() > 0">
+                <foreach item="contactPhone" collection="contactPhoneSet" separator="," open="and contact_phone in ("
+                         close=")">
+                    #{contactPhone}
+                </foreach>
+            </if>
+            <if test="provinceNameSet != null and provinceNameSet.size() > 0">
+                <foreach item="provinceName" collection="provinceNameSet" separator="," open="and province_name in ("
+                         close=")">
+                    #{provinceName}
+                </foreach>
+            </if>
+            <if test="cityNameSet != null and cityNameSet.size() > 0">
+                <foreach item="cityName" collection="cityNameSet" separator="," open="and city_name in ("
+                         close=")">
+                    #{cityName}
+                </foreach>
+            </if>
+            <if test="countyNameSet != null and countyNameSet.size() > 0">
+                <foreach item="countyName" collection="countyNameSet" separator="," open="and county_name in ("
+                         close=")">
+                    #{countyName}
+                </foreach>
+            </if>
+            <if test="addressSet != null and addressSet.size() > 0">
+                <foreach item="address" collection="addressSet" separator="," open="and detailed_address in ("
+                         close=")">
+                    #{address}
+                </foreach>
+            </if>
+            <if test="defaultFlageSet != null and defaultFlageSet.size() > 0">
+                <foreach item="defaultFlage" collection="defaultFlageSet" separator="," open="and default_flag in ("
+                         close=")">
+                    #{defaultFlage}
+                </foreach>
+            </if>
+
+        </where>
+    </select>
+
+    <insert id="insertBatch">
+        insert into biz_address_book (company_name, contact_name, contact_phone, province_name, city_name, county_name, detailed_address, default_flag, dept_id, user_id, remark, del_flag, create_time, update_time, create_by, update_by)
+        values
+        <foreach item="item" index="index" collection="list" separator=",">
+            (#{item.companyName}, #{item.contactName}, #{item.contactPhone}, #{item.provinceName}, #{item.cityName}, #{item.countyName}, #{item.detailedAddress}, #{item.defaultFlag}, #{item.deptId}, #{item.userId}, #{item.remark}, #{item.delFlag}, #{item.createTime}, #{item.updateTime}, #{item.createBy}, #{item.updateBy})
+        </foreach>
+    </insert>
+
+
 </mapper>