福利按品牌导出没有收货地址

This commit is contained in:
2026-09-09 14:04:57 +08:00
parent b4c8ee6a84
commit 5ea061ee8e
3 changed files with 119 additions and 13 deletions
@@ -1,5 +1,7 @@
package com.budwk.app.zhgh.welfare.controller; package com.budwk.app.zhgh.welfare.controller;
import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.zhgh.welfare.service.WelfareProjectService; import com.budwk.app.zhgh.welfare.service.WelfareProjectService;
@@ -27,6 +29,7 @@ public class WelfareNoticeController {
@At @At
@Ok("beetl:/platform/zhghh5/welfare/notice/detail.html") @Ok("beetl:/platform/zhghh5/welfare/notice/detail.html")
@ApiOperation("福利通知附件详情页") @ApiOperation("福利通知附件详情页")
@SaCheckLogin
public void index() { public void index() {
} }
@@ -38,6 +41,7 @@ public class WelfareNoticeController {
*/ */
@At @At
@ApiOperation("查询福利通知附件详情") @ApiOperation("查询福利通知附件详情")
@SaCheckLogin
public Result detailData(@Valid String id) { public Result detailData(@Valid String id) {
if (StrUtil.isBlank(id)) { if (StrUtil.isBlank(id)) {
return Result.error("福利项目ID不能为空"); return Result.error("福利项目ID不能为空");
@@ -586,6 +586,7 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
u.loginname AS loginName, u.loginname AS loginName,
u.username AS userName, u.username AS userName,
wpus.mobile, wpus.mobile,
wpus.userName AS recipient,
wl.userState, wl.userState,
wl.personType, wl.personType,
wl.welfareUnionName, wl.welfareUnionName,
@@ -635,12 +636,23 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
return unionId; return unionId;
} }
/** 将历史收货信息拆为 V3 导出所需的收货人、联系方式和收货地址三列。 */ /**
* 填充品牌导出的收货信息。当前选择记录分别保存收货人、手机号和纯地址文本;
* 历史记录可能将三项信息拼接在 receiveAddress 中,因此继续兼容旧格式解析。
*/
private void fillV3ReceiveAddress(NutMap row) { private void fillV3ReceiveAddress(NutMap row) {
String mobile = row.getString("mobile");
if (StrUtil.isNotBlank(mobile)) {
row.put("phone", mobile);
}
String receiveAddress = row.getString("receiveAddress"); String receiveAddress = row.getString("receiveAddress");
if (StrUtil.isBlank(receiveAddress)) { if (StrUtil.isBlank(receiveAddress)) {
return; return;
} }
// 新数据的 receiveAddress 仅保存地址正文,可直接作为收货地址导出。
row.put("address", receiveAddress);
Map<String, String> values = new HashMap<>(); Map<String, String> values = new HashMap<>();
for (String pair : receiveAddress.split("[,]")) { for (String pair : receiveAddress.split("[,]")) {
String[] keyValue = pair.split("[:]", 2); String[] keyValue = pair.split("[:]", 2);
@@ -648,9 +660,19 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
values.put(keyValue[0].trim(), keyValue[1].trim()); values.put(keyValue[0].trim(), keyValue[1].trim());
} }
} }
row.put("recipient", values.get("")); String recipient = StrUtil.blankToDefault(values.get("收件人"), values.get(""));
row.put("phone", values.get("联系方式")); String phone = StrUtil.blankToDefault(values.get("联系方式"),
row.put("address", values.get("收货地址")); StrUtil.blankToDefault(values.get("手机号码"), values.get("手机号")));
String address = StrUtil.blankToDefault(values.get("收货地址"), values.get("详细地址"));
if (StrUtil.isNotBlank(recipient)) {
row.put("recipient", recipient);
}
if (StrUtil.isNotBlank(phone)) {
row.put("phone", phone);
}
if (StrUtil.isNotBlank(address)) {
row.put("address", address);
}
} }
/** /**
+89 -9
View File
@@ -1,17 +1,85 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="false" scanPeriod="60000" debug="false"> <configuration scan="false" scanPeriod="60000" debug="false">
<!-- 定义日志文件的存储路径 --> <!-- 日志存储路径 -->
<property name="LOG_HOME" value="./logs"/> <property name="LOG_HOME" value="./logs"/>
<!-- 控制台输出配置 --> <!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder> <encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder> </encoder>
</appender> </appender>
<!-- INFO级别日志文件配置 -->
<!--
#################################################################################
# #
# 全文输出日志(一个文件存储)start #
# #
#################################################################################
-->
<!-- 所有级别日志写入同一个文件 -->
<appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/app.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/app-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>300</maxHistory>
</rollingPolicy>
</appender>
<!-- 框架日志级别(按需调整) -->
<logger name="org.eclipse.jetty" level="INFO"/>
<logger name="org.quartz" level="INFO"/>
<logger name="org.nutz" level="DEBUG"/>
<!-- root loggerDEBUG 级别,输出到控制台和全量文件 -->
<root level="DEBUG">
<appender-ref ref="STDOUT"/>
<appender-ref ref="ALL_FILE"/>
</root>
<!--
#################################################################################
# #
# 全文输出日志(一个文件存储)end #
# #
#################################################################################
-->
<!--
#################################################################################
# #
# debug、info、error分文件输出 start #
# #
#################################################################################
-->
<!-- DEBUG级别日志文件配置 -->
<!--<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/debug.log</file>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/debug-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>300</maxHistory>
</rollingPolicy>
</appender>
&lt;!&ndash; INFO级别日志文件配置 &ndash;&gt;
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/info.log</file> <file>${LOG_HOME}/info.log</file>
<encoder> <encoder>
@@ -24,11 +92,11 @@
</filter> </filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/info-%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${LOG_HOME}/info-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory> <maxHistory>300</maxHistory>
</rollingPolicy> </rollingPolicy>
</appender> </appender>
<!-- ERROR级别日志文件配置 --> &lt;!&ndash; ERROR级别日志文件配置 &ndash;&gt;
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/error.log</file> <file>${LOG_HOME}/error.log</file>
<encoder> <encoder>
@@ -41,19 +109,31 @@
</filter> </filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/error-%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${LOG_HOME}/error-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory> <maxHistory>300</maxHistory>
</rollingPolicy> </rollingPolicy>
</appender> </appender>
<logger name="java" additivity="false" /> &lt;!&ndash; 框架日志级别 &ndash;&gt;
&lt;!&ndash; <logger name="java" additivity="false" />&ndash;&gt;
<logger name="org.eclipse.jetty" level="INFO"/> <logger name="org.eclipse.jetty" level="INFO"/>
<logger name="org.quartz" level="INFO"/> <logger name="org.quartz" level="INFO"/>
<logger name="org.nutz" level="DEBUG"/> <logger name="org.nutz" level="DEBUG"/>
<!-- 日志级别和appender的关联 --> &lt;!&ndash; 日志级别和appender的关联 &ndash;&gt;
<root level="DEBUG"> <root level="DEBUG">
<appender-ref ref="STDOUT"/> <appender-ref ref="STDOUT"/>
<appender-ref ref="DEBUG_FILE"/>
<appender-ref ref="INFO_FILE"/> <appender-ref ref="INFO_FILE"/>
<appender-ref ref="ERROR_FILE"/> <appender-ref ref="ERROR_FILE"/>
</root> </root>-->
<!--
#################################################################################
# #
# debug、info、error分文件输出 end #
# #
#################################################################################
-->
</configuration> </configuration>