提交 64bfc1e0 authored 作者: 李秋林's avatar 李秋林

pom文件修改版本信息;员工上传门店计划添加批量上传模块;取消部分log打印

上级 8bfa9302
......@@ -13,7 +13,7 @@
<groupId>com.wangxiaolu</groupId>
<artifactId>wangxiaolu-promotion-service</artifactId>
<version>0.1.11</version>
<version>0.1.12</version>
<name>wangxiaolu-promotion-service</name>
<description>promotion-service</description>
......
......@@ -86,6 +86,9 @@ public class ManageEmployeeInfoInfoDaoImpl implements ManageEmployeeInfoDao {
if (ewrap.isHasDeptQcId()){
qw.ne(ManageEmployeeInfoDO::getDeptQcId,"");
}
if (!CollectionUtils.isEmpty(ewrap.getEmployeeNos())){
qw.in(ManageEmployeeInfoDO::getEmployeeNo,ewrap.getEmployeeNos());
}
return qw;
}
......
......@@ -51,7 +51,6 @@ public class PromotionStoreDaoImpl implements PromotionStoreDao {
PromotionStoreDO storeDo = new PromotionStoreDO();
BeanUtils.copyProperties(promotionStoreDto, storeDo);
promotionStoreMapper.insert(storeDo);
log.info("录入店铺:{}", JSONObject.toJSONString(storeDo));
}
@Override
......
......@@ -34,7 +34,6 @@ public class TemporaryActivityPhotoDaoImpl implements TemporaryActivityPhotoDao
@Override
public void saveReportedList(Integer temporaryId, Long reportedId, Integer photoType, List<String> urls, List<String> changeUrls) {
if (CollectionUtils.isEmpty(changeUrls)) {
log.info("活动id[{}]图片无改变值", reportedId);
return;
}
......@@ -45,7 +44,6 @@ public class TemporaryActivityPhotoDaoImpl implements TemporaryActivityPhotoDao
String uId = uArr[uArr.length - 1];
urlTypeMap.put(uId, type);
}
log.info("活动id[{}]图片修改后的list为:{}", reportedId, urlTypeMap);
for (String photoUrl : urls) {
......@@ -53,7 +51,6 @@ public class TemporaryActivityPhotoDaoImpl implements TemporaryActivityPhotoDao
String photoFiledId = photoArr[photoArr.length - 1];
String type = urlTypeMap.get(photoFiledId);
log.info("图片文件id[{}]类型为{}", photoFiledId, type);
// 现存图片列表中不存在,删除
if (StringUtils.isBlank(type)) {
temporaryActivityPhotoMapper.updateIsDelete(reportedId, photoFiledId);
......@@ -180,7 +177,6 @@ public class TemporaryActivityPhotoDaoImpl implements TemporaryActivityPhotoDao
}
temporaryActivityPhotoMapper.insert(photoDo);
log.info("保存促销员打卡图片:{}", photoDo);
}
/**
* DO to DTO (单个对象)
......
......@@ -48,7 +48,6 @@ public class TemporaryActivityReportedDaoImpl implements TemporaryActivityReport
tDo.setCreateDate(DateUtil.today());
temporaryActivityReportedMapper.insert(tDo);
log.info("促销员今日活动上报数据完成,生成id[{}],数据信息:{}", tDo.getId(), tDo);
return tDo.getId();
}
......
......@@ -5,6 +5,8 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.Set;
/**
* @author : liqiulin
* @date : 2024-09-20 11
......@@ -21,5 +23,7 @@ public class ManageEmployeeWrapper {
private String employeeNo;
private Set<String> employeeNos;
private boolean hasDeptQcId;
}
......@@ -26,6 +26,8 @@ public class EmployeeActivityPlanRecordDO implements Serializable {
*/
private Integer employeeId;
private String employeeName;
/**
* 文件http地址
*/
......
......@@ -24,6 +24,8 @@ public class EmployeeActivityPlanRecordDto implements Serializable {
*/
private Integer employeeId;
private String employeeName;
/**
* 文件http地址
*/
......
......@@ -3,12 +3,15 @@ package com.wangxiaolu.promotion.service.activity.manage.impl;
import com.wangxiaolu.promotion.common.excel.ReadExcelUtils;
import com.wangxiaolu.promotion.common.redis.RedisKeys;
import com.wangxiaolu.promotion.common.redis.service.RedisCache;
import com.wangxiaolu.promotion.domain.activity.dao.ManageEmployeeInfoDao;
import com.wangxiaolu.promotion.domain.activity.wrapperQo.ManageEmployeeWrapper;
import com.wangxiaolu.promotion.domain.manage.dao.EmployeeActivityPlanInfoDao;
import com.wangxiaolu.promotion.domain.manage.dao.EmployeeActivityPlanRecordDao;
import com.wangxiaolu.promotion.exception.DataException;
import com.wangxiaolu.promotion.pojo.activity.manage.dto.EmployeeActivityPlanInfoDto;
import com.wangxiaolu.promotion.pojo.activity.manage.dto.EmployeeActivityPlanRecordDto;
import com.wangxiaolu.promotion.pojo.activity.manage.vo.ActivityPlanVo;
import com.wangxiaolu.promotion.pojo.user.dto.ManageEmployeeInfoDto;
import com.wangxiaolu.promotion.result.basedata.RCode;
import com.wangxiaolu.promotion.service.activity.manage.ActivityPlanRecordCoreService;
import org.apache.commons.lang3.StringUtils;
......@@ -22,6 +25,7 @@ import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author : liqiulin
......@@ -36,6 +40,8 @@ public class ActivityPlanRecordCoreServiceImpl implements ActivityPlanRecordCore
EmployeeActivityPlanRecordDao employeeActivityPlanRecordDao;
@Autowired
EmployeeActivityPlanInfoDao employeeActivityPlanInfoDao;
@Autowired
ManageEmployeeInfoDao manageEmployeeInfoDao;
@Transactional(rollbackFor = Exception.class)
@Override
......@@ -57,7 +63,8 @@ public class ActivityPlanRecordCoreServiceImpl implements ActivityPlanRecordCore
private void saveActivityPlanInfo(ActivityPlanVo activityPlanVo, EmployeeActivityPlanRecordDto planDto) throws Exception {
// 下载
String filePath = "/home/" + planDto.getExcelFiledId();
// String filePath = "/home/" + planDto.getExcelFiledId();
String filePath = "/Users/a02200059/Desktop/临时文件/plan/" + planDto.getExcelFiledId();
downloadExcel(activityPlanVo.getExcelUrl(), filePath);
// 读取
List<EmployeeActivityPlanInfoDto> planInfoDtos = readSheet0(filePath, activityPlanVo, planDto);
......@@ -89,12 +96,28 @@ public class ActivityPlanRecordCoreServiceImpl implements ActivityPlanRecordCore
throw new DataException(RCode.API_DATA_ERROR);
}
// 判断是否是城市经理已经的数据,5列数据是城市经理自己的,6列数据是战区顾问批量上传的
if (rows.get(1).size() == 5){
return saveEmployeeOneselfPlan(rows,activityPlanVo,planDto);
}else if (rows.get(1).size() == 6){
return saveDistrictPlan(rows,activityPlanVo,planDto);
}else {
throw new DataException(RCode.API_DATA_ERROR);
}
}
/**
* 读取表格并进行数据校验
* 上传文件人员:城市经理自己
*/
private List<EmployeeActivityPlanInfoDto> saveEmployeeOneselfPlan(Map<Integer, List<Object>> rows,ActivityPlanVo activityPlanVo, EmployeeActivityPlanRecordDto planDto) throws Exception {
// 查询当前用户下有效的门店名称列表,用于检查是否存在同名店铺
Set<String> storeNameDbList = employeeActivityPlanInfoDao.findStoreNameByEmployeeId(activityPlanVo.getEmployeeId());
Map<Object, Object> dealers = redisCache.getAllHash(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey());
Map<Object, Object> patternMap = redisCache.getAllHash(RedisKeys.TemporaryKeys.TENOIRART_ACTIVITY_PATTERN.getKey());
// 2、校验数据准确性
verifyRow(rows, dealers,patternMap.values(),storeNameDbList);
verifyRowEmployeeOneselfPlan(rows, dealers,patternMap.values(),storeNameDbList);
Map<String,Integer> patternInfoMap = new HashMap<>();
for (Map.Entry<Object, Object> entry : patternMap.entrySet()) {
......@@ -129,10 +152,64 @@ public class ActivityPlanRecordCoreServiceImpl implements ActivityPlanRecordCore
return planInfoDtos;
}
/**
* 读取表格并进行数据校验
* 上传文件人员:城市顾问批量上传
*/
private List<EmployeeActivityPlanInfoDto> saveDistrictPlan(Map<Integer, List<Object>> rows,ActivityPlanVo activityPlanVo, EmployeeActivityPlanRecordDto planDto) throws Exception {
// 查询当前用户下有效的门店名称列表,用于检查是否存在同名店铺
Set<String> storeNameDbList = employeeActivityPlanInfoDao.findStoreNameByEmployeeId(activityPlanVo.getEmployeeId());
Map<Object, Object> dealers = redisCache.getAllHash(RedisKeys.UserKeys.DEALER_HAVE_LIST.getKey());
Map<Object, Object> patternMap = redisCache.getAllHash(RedisKeys.TemporaryKeys.TENOIRART_ACTIVITY_PATTERN.getKey());
// 2、校验数据准确性并返回涉及到的城市经理工号
Set<String> employeeNos = verifyDistrictPlan(rows, dealers, patternMap.values(), storeNameDbList);
List<ManageEmployeeInfoDto> employeeInfos = manageEmployeeInfoDao.selectList(new ManageEmployeeWrapper().setEmployeeNos(employeeNos));
Map<String, ManageEmployeeInfoDto> employeeInfoMap = employeeInfos.stream().collect(Collectors.toMap(ManageEmployeeInfoDto::getEmployeeNo, o -> o));
Map<String,Integer> patternInfoMap = new HashMap<>();
for (Map.Entry<Object, Object> entry : patternMap.entrySet()) {
patternInfoMap.put(entry.getValue().toString(),Integer.parseInt((String) entry.getKey()));
}
/**
* 3、保存入库
*/
List<EmployeeActivityPlanInfoDto> planInfoDtos = new ArrayList<>(rows.size() * 2);
for (Map.Entry<Integer, List<Object>> entry : rows.entrySet()) {
List<Object> value = entry.getValue();
ManageEmployeeInfoDto employeeInfo = employeeInfoMap.get((String) value.get(1));
if (Objects.isNull(employeeInfo)){
throw new DataException("工号错误:"+value.get(1));
}
EmployeeActivityPlanInfoDto planInfoDto = new EmployeeActivityPlanInfoDto()
.setActivityPlanRecordId(planDto.getId())
.setExcelFiledId(planDto.getExcelFiledId())
.setEmployeeId(employeeInfo.getId())
.setEmployeeName(employeeInfo.getName())
.setEmployeeNo(employeeInfo.getEmployeeNo())
.setActivityMonth(planDto.getActivityMonth())
.setCity((String) value.get(0))
.setDealerId((String) value.get(2))
.setDealerName((String) dealers.get(value.get(2)))
.setLineName((String) value.get(3))
.setStoreName((String) value.get(4))
.setActivityPattern((String) value.get(5));
planInfoDto.setActivityPatternId(patternInfoMap.get(planInfoDto.getActivityPattern()));
planInfoDtos.add(planInfoDto);
}
return planInfoDtos;
}
/**
* 校验数据是否规范
* 上传文件人员:城市经理自己
*/
private void verifyRow(Map<Integer, List<Object>> rows, Map<Object, Object> dealers,Collection<Object> patterns,Set<String> storeNameDbSet) throws Exception {
private void verifyRowEmployeeOneselfPlan(Map<Integer, List<Object>> rows, Map<Object, Object> dealers,Collection<Object> patterns,Set<String> storeNameDbSet) throws Exception {
StringBuilder msg = new StringBuilder();
List<String> storeList = new ArrayList<>(storeNameDbSet);
......@@ -188,4 +265,80 @@ public class ActivityPlanRecordCoreServiceImpl implements ActivityPlanRecordCore
}
}
/**
* 校验数据是否规范
* 上传文件人员:城市顾问批量上传
*/
private Set<String> verifyDistrictPlan(Map<Integer, List<Object>> rows, Map<Object, Object> dealers,Collection<Object> patterns,Set<String> storeNameDbSet) throws Exception {
Set<String> employeeNos = new HashSet<>(20);
StringBuilder msg = new StringBuilder();
List<String> storeList = new ArrayList<>(storeNameDbSet);
boolean patternY = false;
for (Map.Entry<Integer, List<Object>> entry : rows.entrySet()) {
Integer rowNo = entry.getKey() + 1;
List<Object> value = entry.getValue();
StringBuilder sb = new StringBuilder();
String city = (String) value.get(0);
if (StringUtils.isBlank(city)) {
sb.append("城市不可为空;");
}else if (!city.contains("市")){
value.set(0,city+"市");
}
if (StringUtils.isBlank((String) value.get(1))) {
sb.append("门店负责人不可为空;");
}else {
employeeNos.add((String) value.get(1));
}
if (!dealers.containsKey(((String) value.get(2)).trim())) {
sb.append("经销商编码错误;");
}
if (StringUtils.isBlank((String) value.get(3))) {
sb.append("系统名称不可为空;");
}
String storeName = (String) value.get(4);
if (StringUtils.isBlank(storeName)) {
sb.append("店铺名称不可为空;");
} else if (storeList.contains(storeName)) {
sb.append("店铺名称已存在;");
} else {
storeList.add(storeName);
}
String pattern = (String) value.get(5);
if (StringUtils.isBlank(pattern)) {
sb.append("活动模式不可为空;");
}else if (!patterns.contains(pattern)){
patternY = true;
}
if (sb.length() > 0) {
msg.append("第").append(rowNo).append("行:").append(sb);
}
}
if (patternY){
msg.append("活动模式列仅限:").append(patterns).append("(需区分大小写)");
}
if (msg.length() > 0) {
throw new DataException(msg.toString());
}
return employeeNos;
}
}
......@@ -55,7 +55,6 @@ public class TemporaryActivityClockCoreServiceImpl implements TemporaryActivityC
@Transactional(rollbackFor = Exception.class)
@Override
public void clockInTodayActivity(TemporaryClockDto dto, Integer clockType) {
log.info("促销员当日打卡[type-{}]信息保存:{}", clockType, dto.toString());
if (Objects.isNull(dto.getId())) {
// 补充信息
EmployeeActivityPlanInfoDto planInfoDto = employeeActivityPlanInfoDao.selectById(dto.getStoreId());
......
......@@ -103,6 +103,5 @@ public class TemporaryActivityClockQueryServiceImpl implements TemporaryActivity
temporaryClockDto.setClockOutPhotoUpdateTime(clockOutPhotoDto.getUpdateTime());
}
log.info("查询打卡记录{}的所有图片:{}", temporaryClockDto.getId(), photoGroup);
}
}
......@@ -259,6 +259,5 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
if (!CollectionUtils.isEmpty(temActDto.getPsvPhotoUrls())) {
tempActivityPhotoDao.saveReportedList(temporaryId, reportedId, ActivityPhotoType.POS_SELL_VOUCHER.getType(), temActDto.getPsvPhotoUrls(), temActDto.getPsvChangePhotoUrls());
}
log.info("促销员今日活动上报-图片保存成功,关联活动上报数据id[{}],数据信息:{}", temActDto.getId(), temActDto);
}
}
......@@ -29,7 +29,6 @@ public class PromotionServiceImpl implements PromotionService {
Integer userCount = userInfoDao.findUserByUserName(userLoginParam.getLoginName());
if (1 == userCount){
// 生成登录信息
log.info("生成登录信息:{}",userLoginParam.getLoginName());
return;
}
throw new ParamException(RCode.LOGIN_PARAM_ERROR,null);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论