整改收货地址可以导出全部的福利地址
This commit is contained in:
+19
@@ -6,6 +6,7 @@ import com.budwk.app.base.result.Result;
|
|||||||
import com.budwk.app.base.service.BaseService;
|
import com.budwk.app.base.service.BaseService;
|
||||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
import com.budwk.app.zhgh.welfare.model.WelfareMemberAddress;
|
import com.budwk.app.zhgh.welfare.model.WelfareMemberAddress;
|
||||||
|
import com.budwk.app.zhgh.welfare.service.WelfareAddressManageService;
|
||||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
import org.nutz.dao.Chain;
|
import org.nutz.dao.Chain;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
@@ -18,6 +19,8 @@ import org.nutz.mvc.annotation.At;
|
|||||||
import org.nutz.mvc.annotation.Ok;
|
import org.nutz.mvc.annotation.Ok;
|
||||||
import org.nutz.mvc.annotation.Param;
|
import org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ClassName WelfareAddressManageController
|
* @ClassName WelfareAddressManageController
|
||||||
* @Description 福利地址管理
|
* @Description 福利地址管理
|
||||||
@@ -31,12 +34,28 @@ public class WelfareAddressManageController {
|
|||||||
@Inject
|
@Inject
|
||||||
private BaseService baseService;
|
private BaseService baseService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private WelfareAddressManageService welfareAddressManageService;
|
||||||
|
|
||||||
@At("")
|
@At("")
|
||||||
@Ok("beetl:/platform/zhgh/welfare/addressManage/index.html")
|
@Ok("beetl:/platform/zhgh/welfare/addressManage/index.html")
|
||||||
@SaCheckPermission("welfare.addressManage")
|
@SaCheckPermission("welfare.addressManage")
|
||||||
public void index() {
|
public void index() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出全部用户的收货地址,不接收用户或分页筛选参数。
|
||||||
|
* 无返回对象,文件内容直接写入响应。
|
||||||
|
*
|
||||||
|
* @param response 文件下载响应,输出包含工号、姓名、收货地址三列的 XLSX 文件
|
||||||
|
*/
|
||||||
|
@At
|
||||||
|
@Ok("void")
|
||||||
|
@SaCheckPermission("welfare.addressManage")
|
||||||
|
public void exportAllAddress(HttpServletResponse response) {
|
||||||
|
welfareAddressManageService.exportAllAddress(response);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 地址列表
|
* 地址列表
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.budwk.app.zhgh.welfare.service;
|
||||||
|
|
||||||
|
import com.budwk.app.base.service.BaseService;
|
||||||
|
import com.budwk.app.zhgh.welfare.model.WelfareMemberAddress;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 福利收货地址管理服务。
|
||||||
|
*/
|
||||||
|
public interface WelfareAddressManageService extends BaseService<WelfareMemberAddress> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 仅导出有收货地址的人员,每人一行,多地址优先取默认地址。
|
||||||
|
* 无返回对象,文件内容直接写入响应。
|
||||||
|
*
|
||||||
|
* @param response 文件下载响应,输出工号、姓名、收货地址三列的 XLSX 文件
|
||||||
|
*/
|
||||||
|
void exportAllAddress(HttpServletResponse response);
|
||||||
|
}
|
||||||
+70
@@ -0,0 +1,70 @@
|
|||||||
|
package com.budwk.app.zhgh.welfare.service.impl;
|
||||||
|
|
||||||
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||||
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||||
|
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||||
|
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||||
|
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||||
|
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||||
|
import com.budwk.app.zhgh.welfare.model.WelfareMemberAddress;
|
||||||
|
import com.budwk.app.zhgh.welfare.service.WelfareAddressManageService;
|
||||||
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
|
import org.nutz.dao.Dao;
|
||||||
|
import org.nutz.dao.Sqls;
|
||||||
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.lang.util.NutMap;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 汇总用户与福利地址信息,生成每人一行的收货地址表。
|
||||||
|
*/
|
||||||
|
@IocBean(args = {"refer:dao"})
|
||||||
|
public class WelfareAddressManageServiceImpl extends BaseServiceImpl<WelfareMemberAddress> implements WelfareAddressManageService {
|
||||||
|
|
||||||
|
public WelfareAddressManageServiceImpl(Dao dao) {
|
||||||
|
super(dao);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 导出有收货地址人员的工号、姓名和完整收货地址,按工号排序。
|
||||||
|
* 无返回对象,XLSX 文件直接写入响应。
|
||||||
|
*
|
||||||
|
* @param response 文件下载响应,输出工号、姓名、收货地址三列的 XLSX 文件
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void exportAllAddress(HttpServletResponse response) {
|
||||||
|
// 沿用福利地址导出的排序规则:默认地址优先;未设默认或多个默认时按 ID 稳定选取一条。
|
||||||
|
// 仅关联存在地址记录的人员;逐段处理空值,避免部分地区字段为空导致整条地址丢失。
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
u.loginname,
|
||||||
|
u.username,
|
||||||
|
CONCAT(IFNULL(a.province, ''), IFNULL(a.city, ''),
|
||||||
|
IFNULL(a.county, ''), IFNULL(a.addressDetail, '')) AS address
|
||||||
|
FROM sys_user u
|
||||||
|
INNER JOIN (
|
||||||
|
SELECT userId, province, city, county, addressDetail,
|
||||||
|
ROW_NUMBER() OVER (PARTITION BY userId ORDER BY isDefault DESC, id) AS rn
|
||||||
|
FROM welfare_member_address
|
||||||
|
) a ON a.userId = u.id AND a.rn = 1
|
||||||
|
ORDER BY u.loginname, u.id
|
||||||
|
""");
|
||||||
|
List<NutMap> list = listMap(sql);
|
||||||
|
|
||||||
|
// 工号按字符串导出,保留前导零;收货地址只包含省市区县和详细地址。
|
||||||
|
List<ExcelExportEntity> entities = new ArrayList<>();
|
||||||
|
entities.add(new ExcelExportEntity("工号", "loginname", 20));
|
||||||
|
entities.add(new ExcelExportEntity("姓名", "username", 20));
|
||||||
|
entities.add(new ExcelExportEntity("收货地址", "address", 70));
|
||||||
|
|
||||||
|
ExportParams exportParams = new ExportParams();
|
||||||
|
exportParams.setType(ExcelType.XSSF);
|
||||||
|
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entities, list);
|
||||||
|
// 全局下载方法负责写入响应并关闭工作簿。
|
||||||
|
CommonDownloadUtil.download("所有人收货地址.xlsx", workbook, response);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@ layout("/layouts/platform.html"){
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<table-tool :app="this" label="收货地址">
|
<table-tool :app="this" label="收货地址">
|
||||||
<el-button @click="openAddress" size="small" type="primary">新增地址</el-button>
|
<el-button @click="openAddress" size="small" type="primary">新增地址</el-button>
|
||||||
|
<el-button v-if="$auth.hasRole('SYSADMIN')" @click="exportAllAddress" size="small" type="primary">导出所有人收货地址</el-button>
|
||||||
</table-tool>
|
</table-tool>
|
||||||
|
|
||||||
<el-table
|
<el-table
|
||||||
@@ -74,6 +75,10 @@ layout("/layouts/platform.html"){
|
|||||||
"address-dialog": ADDRESS_DIALOG
|
"address-dialog": ADDRESS_DIALOG
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 导出全部用户的收货地址,不传当前用户或分页条件;下载和 loading 复用全局方法。
|
||||||
|
exportAllAddress() {
|
||||||
|
this.$downLoad("/platform/welfare/addressManage/exportAllAddress", {})
|
||||||
|
},
|
||||||
selectUserAddress(){
|
selectUserAddress(){
|
||||||
this.pageData()
|
this.pageData()
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -16,11 +16,22 @@ layout("/layouts/platform_h5.html"){
|
|||||||
text-overflow: unset !important;
|
text-overflow: unset !important;
|
||||||
white-space: normal !important;
|
white-space: normal !important;
|
||||||
}
|
}
|
||||||
.sign-success .label{
|
/* 仅突出当前活动列表的报名结果,姓名过长时完整换行展示。 */
|
||||||
color: #0e9558;
|
.table-list-container .sign-success {
|
||||||
|
align-items: baseline;
|
||||||
|
line-height: 28px;
|
||||||
}
|
}
|
||||||
.sign-success .value{
|
.table-list-container .sign-success .label {
|
||||||
color: #0e9558;
|
color: #087f4f;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.table-list-container .sign-success .value {
|
||||||
|
min-width: 0;
|
||||||
|
color: #087f4f;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 700;
|
||||||
|
overflow-wrap: anywhere;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user