From 0fa0ace1666f52a0fe29f5ccd5e19adc15c51b5b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A3=B7=E5=8F=B6?=
<14103883+leaf-phos@user.noreply.gitee.com>
Date: Sun, 27 Apr 2025 15:07:02 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E6=95=B0=E6=8D=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ruoyi/bst/agreement/domain/Agreement.java | 14 +-
.../bst/agreement/domain/AgreementVO.java | 3 +
.../agreement/domain/enums/AgreementType.java | 16 ++
.../bst/agreement/mapper/AgreementMapper.java | 10 --
.../bst/agreement/mapper/AgreementMapper.xml | 155 +-----------------
.../agreement/service/AgreementService.java | 12 +-
.../service/impl/AgreementConverterImpl.java | 4 +-
.../service/impl/AgreementServiceImpl.java | 71 +++++---
.../area/service/impl/AreaServiceImpl.java | 27 ++-
.../impl/CustomerServiceServiceImpl.java | 2 +-
.../service/impl/IotReceiveServiceImpl.java | 1 +
.../ruoyi/web/bst/AgreementController.java | 4 +-
.../web/bst/CustomerServiceController.java | 3 +
13 files changed, 126 insertions(+), 196 deletions(-)
create mode 100644 ruoyi-service/src/main/java/com/ruoyi/bst/agreement/domain/enums/AgreementType.java
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/domain/Agreement.java b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/domain/Agreement.java
index 06e7bf9..61f2c1e 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/domain/Agreement.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/domain/Agreement.java
@@ -1,16 +1,16 @@
package com.ruoyi.bst.agreement.domain;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.interfaces.LogBizParam;
-
import com.ruoyi.common.core.validate.ValidGroup;
+
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-
/**
* 协议对象 bst_agreement
*
@@ -23,11 +23,7 @@ public class Agreement extends BaseEntity implements LogBizParam
private static final long serialVersionUID = 1L;
private Long id;
-
- @Excel(name = "商户ID")
- @ApiModelProperty("商户ID")
- private Long storeId;
-
+
@Excel(name = "运营区ID")
@ApiModelProperty("运营区ID")
private Long areaId;
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/domain/AgreementVO.java b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/domain/AgreementVO.java
index 88ceca1..4e3ccc4 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/domain/AgreementVO.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/domain/AgreementVO.java
@@ -7,6 +7,9 @@ import lombok.Data;
public class AgreementVO extends Agreement{
+ @ApiModelProperty("商户ID")
+ private Long storeId;
+
@ApiModelProperty("商户名")
private String userName;
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/domain/enums/AgreementType.java b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/domain/enums/AgreementType.java
new file mode 100644
index 0000000..d1b3587
--- /dev/null
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/domain/enums/AgreementType.java
@@ -0,0 +1,16 @@
+package com.ruoyi.bst.agreement.domain.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum AgreementType {
+
+ NOTICE("0", "公告"),
+ RENT("1", "租赁协议");
+
+ private final String code;
+ private final String name;
+
+}
\ No newline at end of file
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/mapper/AgreementMapper.java b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/mapper/AgreementMapper.java
index 0ce2b86..f5d85db 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/mapper/AgreementMapper.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/mapper/AgreementMapper.java
@@ -38,16 +38,6 @@ public interface AgreementMapper
*/
int insertAgreement(Agreement agreement);
- /**
- * 批量新增协议
- */
- int batchInsert(@Param("list") List extends Agreement> list);
-
- /**
- * 批量修改协议
- */
- int batchUpdate(@Param("list") List extends Agreement> list);
-
/**
* 修改协议
*
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/mapper/AgreementMapper.xml b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/mapper/AgreementMapper.xml
index 914ed32..96e96e3 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/mapper/AgreementMapper.xml
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/mapper/AgreementMapper.xml
@@ -9,7 +9,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select
bag.id,
- bag.store_id,
bag.area_id,
bag.title,
bag.brief,
@@ -20,18 +19,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bag.create_time,
bag.update_time,
su.nick_name as user_name,
- ba.name as area_name
+ ba.name as area_name,
+ ba.user_id as store_id
from
bst_agreement bag
- left join sys_user su on bag.store_id = su.user_id
left join bst_area ba on bag.area_id = ba.id
+ left join sys_user su on ba.user_id = su.user_id
- and bag.store_id = #{query.storeId}
+ and ba.user_id = #{query.storeId}
and bag.area_id = #{query.areaId}
and bag.title like concat('%', #{query.title}, '%')
and bag.brief like concat('%', #{query.brief}, '%')
@@ -45,10 +45,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{id}
-
+
${@com.ruoyi.framework.util.DataScopeUtil@dataScope(
null,
- "bag.store_id",
+ "ba.user_id",
null,
null,
query.scope
@@ -65,7 +65,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
@@ -80,7 +80,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
insert into bst_agreement
- store_id,
area_id,
title,
brief,
@@ -92,7 +91,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update_time,
- #{storeId},
#{areaId},
#{title},
#{brief},
@@ -105,144 +103,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-
- insert into bst_agreement
-
- store_id,
- area_id,
- title,
- brief,
- content,
- agreement_type,
- duration,
- create_time,
- update_time,
-
- values
-
-
- #{i.storeId},
- default,
- #{i.areaId},
- default,
- #{i.title},
- default,
- #{i.brief},
- default,
- #{i.content},
- default,
- #{i.agreementType},
- default,
- #{i.duration},
- default,
- #{i.createTime},
- default,
- #{i.updateTime},
- default,
-
-
-
-
-
- update bst_agreement
-
-
-
-
- WHEN #{item.id} THEN #{item.storeId}
-
-
- WHEN #{item.id} THEN `store_id`
-
-
-
-
-
-
- WHEN #{item.id} THEN #{item.areaId}
-
-
- WHEN #{item.id} THEN `area_id`
-
-
-
-
-
-
- WHEN #{item.id} THEN #{item.title}
-
-
- WHEN #{item.id} THEN `title`
-
-
-
-
-
-
- WHEN #{item.id} THEN #{item.brief}
-
-
- WHEN #{item.id} THEN `brief`
-
-
-
-
-
-
- WHEN #{item.id} THEN #{item.content}
-
-
- WHEN #{item.id} THEN `content`
-
-
-
-
-
-
- WHEN #{item.id} THEN #{item.agreementType}
-
-
- WHEN #{item.id} THEN `agreement_type`
-
-
-
-
-
-
- WHEN #{item.id} THEN #{item.duration}
-
-
- WHEN #{item.id} THEN `duration`
-
-
-
-
-
-
- WHEN #{item.id} THEN #{item.createTime}
-
-
- WHEN #{item.id} THEN `create_time`
-
-
-
-
-
-
- WHEN #{item.id} THEN #{item.updateTime}
-
-
- WHEN #{item.id} THEN `update_time`
-
-
-
-
- where id in
-
- #{item.id}
-
-
-
update bst_agreement bag
@@ -252,7 +112,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- store_id = #{data.storeId},
area_id = #{data.areaId},
title = #{data.title},
brief = #{data.brief},
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/service/AgreementService.java b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/service/AgreementService.java
index 778a017..47dfa1a 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/service/AgreementService.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/service/AgreementService.java
@@ -1,9 +1,11 @@
package com.ruoyi.bst.agreement.service;
import java.util.List;
+
import com.ruoyi.bst.agreement.domain.Agreement;
-import com.ruoyi.bst.agreement.domain.AgreementVO;
import com.ruoyi.bst.agreement.domain.AgreementQuery;
+import com.ruoyi.bst.agreement.domain.AgreementVO;
+import com.ruoyi.bst.agreement.domain.enums.AgreementType;
/**
* 协议Service接口
@@ -61,4 +63,12 @@ public interface AgreementService
*/
public int deleteAgreementById(Long id);
+ /**
+ * 复制模板
+ * @param type
+ * @param areaId
+ * @return
+ */
+ public int copyTemplate(AgreementType type, Long areaId);
+
}
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/service/impl/AgreementConverterImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/service/impl/AgreementConverterImpl.java
index 59e732a..5037fa8 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/service/impl/AgreementConverterImpl.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/service/impl/AgreementConverterImpl.java
@@ -28,7 +28,9 @@ public class AgreementConverterImpl implements AgreementConverter {
po.setTitle(data.getTitle());
if (SecurityUtils.isAdmin()){
po.setContentType(data.getContentType());
- }else po.setContentType(AgreementContentType.TEXT.getCode());
+ }else po.setContentType(
+ AgreementContentType.TEXT.getCode()
+ );
po.setAgreementType(data.getAgreementType());
po.setBrief(data.getBrief());
po.setContent(data.getContent());
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/service/impl/AgreementServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/service/impl/AgreementServiceImpl.java
index 032b843..52080fd 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/service/impl/AgreementServiceImpl.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/agreement/service/impl/AgreementServiceImpl.java
@@ -2,25 +2,23 @@ package com.ruoyi.bst.agreement.service.impl;
import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.support.TransactionTemplate;
+import org.springframework.util.CollectionUtils;
+
+import com.github.pagehelper.PageHelper;
+import com.ruoyi.bst.agreement.domain.Agreement;
+import com.ruoyi.bst.agreement.domain.AgreementQuery;
+import com.ruoyi.bst.agreement.domain.AgreementVO;
import com.ruoyi.bst.agreement.domain.enums.AgreementContentType;
-import com.ruoyi.bst.area.domain.AreaQuery;
-import com.ruoyi.bst.area.domain.AreaVO;
+import com.ruoyi.bst.agreement.domain.enums.AgreementType;
+import com.ruoyi.bst.agreement.mapper.AgreementMapper;
+import com.ruoyi.bst.agreement.service.AgreementService;
import com.ruoyi.bst.area.service.AreaService;
-import com.ruoyi.bst.device.domain.DeviceVO;
-import com.ruoyi.bst.model.domain.ModelVO;
-import com.ruoyi.common.core.domain.vo.UserVO;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ServiceUtil;
import com.ruoyi.system.user.service.UserService;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.ruoyi.bst.agreement.mapper.AgreementMapper;
-import com.ruoyi.bst.agreement.domain.Agreement;
-import com.ruoyi.bst.agreement.domain.AgreementVO;
-import com.ruoyi.bst.agreement.domain.AgreementQuery;
-import com.ruoyi.bst.agreement.service.AgreementService;
-import org.springframework.transaction.support.TransactionTemplate;
/**
* 协议Service业务层处理
@@ -76,17 +74,17 @@ public class AgreementServiceImpl implements AgreementService
contentTypeAreaCheck(agreement);
agreement.setCreateTime(DateUtils.getNowDate());
Integer result = transactionTemplate.execute(status -> {
- // 创建设备
- int insert = agreementMapper.insertAgreement(agreement);
- ServiceUtil.assertion(insert != 1,"新增设备失败");
+ // 创建设备
+ int insert = agreementMapper.insertAgreement(agreement);
+ ServiceUtil.assertion(insert != 1,"新增协议失败");
- // 后校验
- AgreementVO vo = this.selectAgreementById(agreement.getId());
- distinct(vo);
+ // 后校验
+ AgreementVO vo = this.selectAgreementById(agreement.getId());
+ distinct(vo);
- return insert;
+ return insert;
- });
+ });
return result==null? 0 : result;
}
@@ -158,4 +156,33 @@ public class AgreementServiceImpl implements AgreementService
}
+ @Override
+ public int copyTemplate(AgreementType type, Long areaId) {
+ if (type == null || areaId == null) {
+ return 0;
+ }
+
+ // 查询模板
+ AgreementQuery query = new AgreementQuery();
+ query.setAgreementType(type.getCode());
+ query.setContentType(AgreementContentType.TEMPLATE.getCode());
+ AgreementVO template = this.selectOne(query);
+ ServiceUtil.assertion(template == null, "协议模板不存在");
+
+ Agreement data = new Agreement();
+ data.setAreaId(areaId);
+ data.setTitle(template.getTitle());
+ data.setBrief(template.getBrief());
+ data.setContent(template.getContent());
+ data.setAgreementType(template.getAgreementType());
+ data.setContentType(AgreementContentType.TEXT.getCode());
+ data.setDuration(template.getDuration());
+ return this.insertAgreement(data);
+ }
+
+ private AgreementVO selectOne(AgreementQuery query) {
+ PageHelper.startPage(1, 1);
+ List list = agreementMapper.selectAgreementList(query);
+ return CollectionUtils.firstElement(list);
+ }
}
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/area/service/impl/AreaServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/area/service/impl/AreaServiceImpl.java
index c98ac82..0c0f408 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/area/service/impl/AreaServiceImpl.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/area/service/impl/AreaServiceImpl.java
@@ -6,8 +6,11 @@ import java.util.List;
import org.locationtech.jts.geom.Geometry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.support.TransactionTemplate;
import com.github.pagehelper.PageHelper;
+import com.ruoyi.bst.agreement.domain.enums.AgreementType;
+import com.ruoyi.bst.agreement.service.AgreementService;
import com.ruoyi.bst.area.domain.Area;
import com.ruoyi.bst.area.domain.AreaQuery;
import com.ruoyi.bst.area.domain.AreaVO;
@@ -19,6 +22,7 @@ import com.ruoyi.bst.areaJoin.domain.enums.AreaJoinPermission;
import com.ruoyi.bst.areaSub.domain.AreaSubVO;
import com.ruoyi.bst.areaSub.service.AreaSubService;
import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.ServiceUtil;
import com.ruoyi.common.utils.collection.CollectionUtils;
import com.ruoyi.common.utils.map.GeoUtils;
@@ -40,6 +44,12 @@ public class AreaServiceImpl implements AreaService
@Autowired
private AreaSubService areaSubService;
+ @Autowired
+ private AgreementService agreementService;
+
+ @Autowired
+ private TransactionTemplate transactionTemplate;
+
/**
* 查询运营区
*
@@ -103,7 +113,20 @@ public class AreaServiceImpl implements AreaService
area.setBoundary(GeoUtils.wkt(geometry));
}
area.setCreateTime(DateUtils.getNowDate());
- return areaMapper.insertArea(area);
+
+ Integer result = transactionTemplate.execute(status -> {
+
+ int rows = areaMapper.insertArea(area);
+ if (rows > 0) {
+ // 复制一份租赁协议到运营区内
+ int copy = agreementService.copyTemplate(AgreementType.RENT, area.getId());
+ ServiceUtil.assertion(copy != 1, "复制协议模板失败");
+ }
+
+ return rows;
+ });
+
+ return result == null ? 0 : result;
}
/**
@@ -172,7 +195,7 @@ public class AreaServiceImpl implements AreaService
}
// 查询运营区内的禁行区
List noRidingList = areaSubService.selectNoRidingListByAreaId(areaId);
-
+
return AreaUtil.getLocationArea(lon, lat, area, noRidingList);
}
diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/customerService/service/impl/CustomerServiceServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/customerService/service/impl/CustomerServiceServiceImpl.java
index d78a1c2..2e30dab 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/bst/customerService/service/impl/CustomerServiceServiceImpl.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/bst/customerService/service/impl/CustomerServiceServiceImpl.java
@@ -2,7 +2,6 @@ package com.ruoyi.bst.customerService.service.impl;
import java.util.List;
-import com.ruoyi.common.utils.ServiceUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -47,6 +46,7 @@ public class CustomerServiceServiceImpl implements CustomerServiceService
CustomerServiceQuery query = new CustomerServiceQuery();
query.setId(id);
query.setScope(scope);
+ query.addAreaPermission(AreaJoinPermission.CUSTOMER_SERVICE_VIEW.getCode());
return this.selectOne(query);
}
diff --git a/ruoyi-service/src/main/java/com/ruoyi/iot/service/impl/IotReceiveServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/iot/service/impl/IotReceiveServiceImpl.java
index 31f77cf..dc3ad35 100644
--- a/ruoyi-service/src/main/java/com/ruoyi/iot/service/impl/IotReceiveServiceImpl.java
+++ b/ruoyi-service/src/main/java/com/ruoyi/iot/service/impl/IotReceiveServiceImpl.java
@@ -85,6 +85,7 @@ public class IotReceiveServiceImpl implements IotReceiveService {
}
// 转为设备信息
+ log.info("收到sys数据:" + msg.getValue());
IotDeviceSysInfo sys = IotUtil.toSysInfo(msg.getValue());
LocalDateTime at = DateUtils.toLocalDateTime(msg.getAt());
diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/bst/AgreementController.java b/ruoyi-web/src/main/java/com/ruoyi/web/bst/AgreementController.java
index db60576..f018cc8 100644
--- a/ruoyi-web/src/main/java/com/ruoyi/web/bst/AgreementController.java
+++ b/ruoyi-web/src/main/java/com/ruoyi/web/bst/AgreementController.java
@@ -4,8 +4,6 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse;
-import com.ruoyi.bst.agreement.service.AgreementConverter;
-import com.ruoyi.common.core.validate.ValidGroup;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
@@ -21,12 +19,14 @@ import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.bst.agreement.domain.Agreement;
import com.ruoyi.bst.agreement.domain.AgreementQuery;
import com.ruoyi.bst.agreement.domain.AgreementVO;
+import com.ruoyi.bst.agreement.service.AgreementConverter;
import com.ruoyi.bst.agreement.service.AgreementService;
import com.ruoyi.bst.agreement.service.AgreementValidator;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.core.validate.ValidGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.enums.LogBizType;
import com.ruoyi.common.utils.poi.ExcelUtil;
diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/bst/CustomerServiceController.java b/ruoyi-web/src/main/java/com/ruoyi/web/bst/CustomerServiceController.java
index 9911364..3a93c2d 100644
--- a/ruoyi-web/src/main/java/com/ruoyi/web/bst/CustomerServiceController.java
+++ b/ruoyi-web/src/main/java/com/ruoyi/web/bst/CustomerServiceController.java
@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.bst.area.service.AreaService;
import com.ruoyi.bst.area.service.AreaValidator;
+import com.ruoyi.bst.areaJoin.domain.enums.AreaJoinPermission;
import com.ruoyi.bst.customerService.domain.CustomerService;
import com.ruoyi.bst.customerService.domain.CustomerServiceQuery;
import com.ruoyi.bst.customerService.domain.CustomerServiceVO;
@@ -62,6 +63,7 @@ public class CustomerServiceController extends BaseController
startPage();
startOrderBy();
query.setScope(true);
+ query.addAreaPermission(AreaJoinPermission.CUSTOMER_SERVICE_VIEW.getCode());
List list = customerServiceService.selectCustomerServiceList(query);
return getDataTable(list);
}
@@ -75,6 +77,7 @@ public class CustomerServiceController extends BaseController
public void export(HttpServletResponse response, CustomerServiceQuery query)
{
query.setScope(true);
+ query.addAreaPermission(AreaJoinPermission.CUSTOMER_SERVICE_VIEW.getCode());
List list = customerServiceService.selectCustomerServiceList(query);
ExcelUtil util = new ExcelUtil(CustomerServiceVO.class);
util.exportExcel(response, list, "客服数据");