提交 a0aa06c4 authored 作者: lvbencai's avatar lvbencai

合并分支 'qa' 到 'master'

增加18:15任务和pos任务,增加导出多维表格三列 查看合并请求 !7
......@@ -7,7 +7,7 @@
<parent>
<groupId>com.wangxiaolu</groupId>
<artifactId>wangxiaolu-promotion-parent</artifactId>
<version>0.0.3</version>
<version>0.0.4</version>
</parent>
<groupId>com.wangxiaolu</groupId>
......@@ -22,7 +22,7 @@
<dependency>
<groupId>com.wangxiaolu</groupId>
<artifactId>wangxiaolu-promotion-common</artifactId>
<version>0.0.3</version>
<version>0.0.4</version>
<exclusions>
<exclusion>
<artifactId>spring-cloud-gateway-server</artifactId>
......
......@@ -15,6 +15,7 @@ import java.util.List;
@TableName(value ="temporary_activity_clock")
@Data
public class TemporaryActivityClockDO implements Serializable {
private Long id;
private Long temporaryId;
......
......@@ -18,7 +18,7 @@ public class TemporaryActivityReportedDO implements Serializable {
@TableId
private Long id;
private Integer temporaryId;
private Long temporaryId;
private String temporaryName;
......
......@@ -3,6 +3,7 @@ package com.wangxiaolu.export.service.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.wangxiaolu.export.mapper.FeishuSheetRecordMapper;
import com.wangxiaolu.export.mapper.entity.FeishuSheetRecordDO;
......@@ -20,7 +21,6 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.swing.*;
import java.util.*;
import java.util.stream.Collectors;
......@@ -76,6 +76,7 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
List<TemporaryActivityPhotoDO> activityClock = clockPhotoMap.containsKey(clockKey) ? clockPhotoMap.get(clockKey) : new ArrayList<>();
activityDataToSheetRow(rdo, temporaryActivityPhotoDOS, activityClock,clockDo);
} catch (Exception e) {
log.error(e.toString(),e);
log.error("上传标号{}报错,跳过此次上传,上传数据:{}", index,JSONObject.toJSONString(rdo));
}
......@@ -89,9 +90,9 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
*
* @param rdo 活动数据
* @param temporaryActivityPhotoDOS 活动中涉及到的照片(推广、POS)
* @param activityClock(打卡照片)
* @param activityPhotoDOS(打卡照片)
*/
private void activityDataToSheetRow(TemporaryActivityReportedDO rdo, List<TemporaryActivityPhotoDO> temporaryActivityPhotoDOS, List<TemporaryActivityPhotoDO> activityClock,TemporaryActivityClockDO clockDo) throws Exception {
private void activityDataToSheetRow(TemporaryActivityReportedDO rdo, List<TemporaryActivityPhotoDO> temporaryActivityPhotoDOS, List<TemporaryActivityPhotoDO> activityPhotoDOS,TemporaryActivityClockDO clockDo) throws Exception {
List<Object> row = new ArrayList<>();
// 证明标识(请忽略),一定要在开头第一个单元格有数据,才能保证之后的数据即使缺失也不会串行
// A-C:证明标识(请忽略) 问题标识(请忽略) 促销员姓名
......@@ -237,9 +238,12 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
/**
* 打卡照片
* 打卡类型小于9 的 类型大于等于4的 照片
* 打卡类型大于等于9 的 单独筛选出处理
*/
Map<Integer, String> clockMap = activityClock.stream().collect(Collectors.toMap(TemporaryActivityPhotoDO::getType, TemporaryActivityPhotoDO::getPhotoUrl));
Map<Integer, String> clockMap = activityPhotoDOS.stream()
.filter(photo -> photo.getType() < 9 && photo.getType() >= 4)
.collect(Collectors.toMap(TemporaryActivityPhotoDO::getType, TemporaryActivityPhotoDO::getPhotoUrl));
// 上班打卡照片 >>>
if (clockMap.containsKey(4)) {
valuesImageToSheet(String.format(rangFormat, "X", "X"), clockMap.get(4));
......@@ -259,6 +263,8 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
if (clockMap.containsKey(7)) {
valuesImageToSheetByRobot2(String.format(rangFormat, "AA", "AA"), clockMap.get(7));
}
log.info("上传打卡照片完成,行号:{}", rowNumStr);
/**
......@@ -292,6 +298,8 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
}
log.info("上传推广-试吃照片完成,行号:{}", rowNumStr);
/**
* 推广互动照片
*/
......@@ -351,8 +359,30 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
pct.append("、成交4:"+DateUtil.formatDateTime(photosType3.get(3).getCreateTime()));
}
Map<Integer, List<TemporaryActivityPhotoDO>> taskMap = activityPhotoDOS.stream()
.filter(photo -> photo.getType() >= 9)
.collect(Collectors.groupingBy(TemporaryActivityPhotoDO::getType ));
// pos任务照片
List<TemporaryActivityPhotoDO> posTaskPhotos = taskMap.get(9);
if (ObjectUtil.isNotEmpty(posTaskPhotos) && posTaskPhotos.size() >0 && ObjectUtil.isNotEmpty(posTaskPhotos.get(0))) {
valuesImageToSheetByRobot2(String.format(rangFormat, "AO", "AO"), posTaskPhotos.get(0).getPhotoUrl());
pct.append("、pos任务1:"+DateUtil.formatDateTime(posTaskPhotos.get(0).getCreateTime()));
}
if (ObjectUtil.isNotEmpty(posTaskPhotos) && posTaskPhotos.size() >1 && ObjectUtil.isNotEmpty(posTaskPhotos.get(1))) {
valuesImageToSheetByRobot2(String.format(rangFormat, "AP", "AP"), posTaskPhotos.get(1).getPhotoUrl());
pct.append("、pos任务2:"+DateUtil.formatDateTime(posTaskPhotos.get(1).getCreateTime()));
}
// 随机任务照片
List<TemporaryActivityPhotoDO> randTaskPhotos = taskMap.get(10);
if (ObjectUtil.isNotEmpty(randTaskPhotos) && randTaskPhotos.size() > 0 && ObjectUtil.isNotEmpty(randTaskPhotos.get(0))) {
valuesImageToSheetByRobot2(String.format(rangFormat, "AN", "AN"), randTaskPhotos.get(0).getPhotoUrl());
pct.append("、随机任务:"+DateUtil.formatDateTime(randTaskPhotos.get(0).getCreateTime()));
}
// 推广类照片上传时间
String range =String.format(rangFormat, "AN", "AN");
String range =String.format(rangFormat, "AQ", "AQ");
updateClockData(range,Arrays.asList(pct.toString()));
log.info("上传推广-成交照片完成,行号:{}", rowNumStr);
......
......@@ -119,7 +119,7 @@ public class FeishuSheetUtils {
JSONObject resultJson = JSONObject.parseObject(result);
int code = resultJson.getInteger("code");
if (code != 0) {
log.error("图片上传错误,上传表格位置:{},报错详情:\n{}", range, result);
log.error("图片{}上传错误,上传表格位置:{},报错详情:\n{}",imageUrl, range, result);
}
} catch (Exception e) {
log.error("图片转换/上传异常,上传表格位置:{}", range);
......
......@@ -7,16 +7,16 @@ spring:
username: root
password: Zt%68Dsuv&M
redis:
port: 21101
host: bj-crs-oyzhz3c6.sql.tencentcdb.com
port: 6379
host: 192.168.100.40
database: 0
password: u)R3jrHk(qwt~mv$Tg=U
password: QjL6H5nH
cloud:
nacos:
discovery:
server-addr: 42.193.103.153:8848
namespace: dd681f3c-0d21-42e5-a96e-14863a7cdcdb
server-addr: 192.168.100.38:8848
namespace: 68c8d97c-715a-4983-99b7-9df9b99f89e7
group: promotion
logging:
......@@ -53,7 +53,7 @@ xxl:
job:
accessToken: default_token
admin:
addresses: http://42.193.103.153:9001/xxl-job-admin
addresses: http://192.168.100.38:9000/xxl-job-admin
executor:
appname: export-dev
port: 9989
......@@ -61,3 +61,4 @@ xxl:
address:
ip:
logpath: /var/logs/xxl_job # 执行器日志路径
# logpath: ./logs/xxl_job # 执行器日志路径
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
# url: jdbc:mysql://bj-cdb-j8ppdy86.sql.tencentcdb.com:63569/promotion_dev?autoReconnect=true
url: jdbc:mysql://192.168.100.39:25301/promotion_dev?autoReconnect=true
username: root
password: Zt%68Dsuv&M
redis:
port: 6379
host: 192.168.100.40
database: 0
password: QjL6H5nH
cloud:
nacos:
discovery:
server-addr: 192.168.100.38:8848
namespace: 68c8d97c-715a-4983-99b7-9df9b99f89e7
group: promotion
logging:
config: classpath:logback-spring.xml
# mybatis-plus 控制台打印sql日志
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
wx:
miniapp:
configs:
- appid:
secret:
token: #微信小程序消息服务器配置的token
aesKey: #微信小程序消息服务器配置的EncodingAESKey
msgDataFormat:
temporary:
token_secret:
employee:
token_secret:
feishu:
activity_robot_1:
app_id: cli_a622204c69e8100b
app_secret: qzezaWe7Kxd61quiU9zRIf7COb4piEkF
activity_robot_2:
app_id: cli_a6220d5dcadf900b
app_secret: WeVaZ6yGXFEON6Lkl53rFdhHc8beQF1Y
# xxl-job配置
xxl:
job:
accessToken: default_token
admin:
addresses: http://192.168.100.38:9000/xxl-job-admin
executor:
appname: export-qa
port: 9989
logretentiondays: 30
address:
ip: 192.168.100.55
logpath: /var/logs/xxl_job # 执行器日志路径
......@@ -5,6 +5,7 @@
<mapper namespace="com.wangxiaolu.export.mapper.TemporaryActivityClockMapper">
<resultMap id="clockMap" type="com.wangxiaolu.export.mapper.entity.TemporaryActivityClockDO">
<result property="clockId" column="id" jdbcType="BIGINT"/>
<result property="temporaryId" column="temporary_id" jdbcType="BIGINT"/>
<result property="createDate" column="create_date" jdbcType="VARCHAR"/>
<collection property="photoList" ofType="com.wangxiaolu.export.mapper.entity.TemporaryActivityPhotoDO">
......@@ -32,7 +33,6 @@
</resultMap>
<select id="findClockPhotoList" resultMap="clockMap">
select ar.temporary_id temporary_id,
ar.create_date create_date,
......@@ -48,32 +48,30 @@
<select id="findClockPhotoListByCreateDate" resultMap="clockMap">
select
ar.temporary_id temporary_id,
select ar.temporary_id temporary_id,
ar.create_date create_date,
ap.type type,
ap.photo_url photo_url,
ap.create_time create_time
from
temporary_activity_reported ar
from temporary_activity_reported ar
inner join temporary_activity_clock ac on ar.temporary_id = ac.temporary_id
and ar.create_date = ac.create_date
inner join temporary_activity_photo ap on ac.id = ap.clock_id
where
ar.create_time BETWEEN '${dateStr} 00:00:00' and '${dateStr} 23:59:00' and ap.is_delete = 1;
where ar.create_time BETWEEN '${dateStr} 00:00:00' and '${dateStr} 23:59:00'
and ap.is_delete = 1;
</select>
<!-- <select id="findClockPhotoListByCreateDate" resultMap="clockMap">-->
<!-- select ar.temporary_id temporary_id,-->
<!-- ar.create_date create_date,-->
<!-- ap.type type,-->
<!-- ap.photo_url photo_url-->
<!-- from temporary_activity_reported ar-->
<!-- inner join temporary_activity_clock ac-->
<!-- on ar.temporary_id = ac.temporary_id and ar.create_date = ac.create_date-->
<!-- inner join temporary_activity_photo ap on ac.id = ap.clock_id-->
<!-- where ar.create_date LIKE '2024-10-%' and ap.is_delete = 1;-->
<!-- </select>-->
<!-- <select id="findClockPhotoListByCreateDate" resultMap="clockMap">-->
<!-- select ar.temporary_id temporary_id,-->
<!-- ar.create_date create_date,-->
<!-- ap.type type,-->
<!-- ap.photo_url photo_url-->
<!-- from temporary_activity_reported ar-->
<!-- inner join temporary_activity_clock ac-->
<!-- on ar.temporary_id = ac.temporary_id and ar.create_date = ac.create_date-->
<!-- inner join temporary_activity_photo ap on ac.id = ap.clock_id-->
<!-- where ar.create_date LIKE '2024-10-%' and ap.is_delete = 1;-->
<!-- </select>-->
<select id="findClockListByActivityIds" resultMap="clockInfoMap">
......@@ -91,27 +89,30 @@
FROM
temporary_activity_clock tac
WHERE
reported_id in
<foreach collection="activityIds" item="activityId" open="(" close=")" separator=",">
#{activityId}
</foreach>
</select>
<select id="findClockPhotoByActivityIds" resultMap="clockMap">
select
ar.temporary_id temporary_id,
ac.id as clockId ,
ar.create_date create_date,
ap.type type,
ap.photo_url photo_url
ap.create_time ,
ap.photo_url
from
temporary_activity_reported ar
inner join temporary_activity_clock ac on ar.temporary_id = ac.temporary_id
and ar.create_date = ac.create_date
inner join temporary_activity_photo ap on ac.id = ap.clock_id
where
ap.is_delete = 1 and
ar.id in
<foreach collection="activityIds" item="activityId" open="(" close=")" separator=",">
#{activityId}
......
......@@ -14,7 +14,7 @@
</resultMap>
<select id="findActivityPhotos" resultMap="BaseResultMap">
select reported_id, type, photo_url,create_time
select reported_id, type, photo_url ,create_time
from temporary_activity_photo
where is_delete = 1
and reported_id in
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论