提交 eaf1d2ce authored 作者: 000516's avatar 000516 提交者: Coding

POS机页面凭证图片上传

POS机页面凭证图片上传
package com.wangxiaolu.promotion.controller.activity.temporary;
import com.wangxiaolu.promotion.enums.activity.ClockType;
import com.wangxiaolu.promotion.exception.ParamException;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryClockVo;
import com.wangxiaolu.promotion.result.basedata.R;
import com.wangxiaolu.promotion.result.basedata.RCode;
import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.Objects;
/**
* @author : liqiulin
* @date : 2024-04-17 19
* @describe : 促销员活动上报、修改
*/
@Slf4j
@RestController
@RequestMapping("/activity/temporary/core")
public class TemporaryActivityClockCoreController {
@Autowired
private TemporaryActivityCoreService tempActivityCoreService;
/**
* 促销员当日打卡信息保存
*/
@PostMapping("/today/clock")
public R clockInTodayActivity(@RequestBody @Validated TemporaryClockVo clockVo) {
clockVo.validate();
Integer clockType = clockVo.getClockType();
boolean isClockIn = ClockType.TEMPORARY_CLOCK_IN.equals(clockType);
// 上班卡必需有店铺id
if (isClockIn && StringUtils.isBlank(clockVo.getStoreQcId())) {
throw new ParamException(RCode.CLOCK_DETAIL_ERROR, null);
}
// 非上班卡必需有打卡记录ID
if (!isClockIn && Objects.isNull((clockVo.getId()))) {
throw new ParamException(RCode.CLOCK_DETAIL_ERROR, null);
}
// 根据打卡经纬度判断与打卡店铺的距离,距离超过100米不能打卡
tempActivityCoreService.clockStoreCalDistance(clockVo.getStoreQcId(),clockVo.getId(),clockVo.getClockCoordinates());
/**
* todo redis打卡-限制重复提交
* todo 后续添加,基于redis
*/
Date clockTime = new Date();
TemporaryClockDto dto = new TemporaryClockDto(clockVo.getClockType(), clockVo.getId(), clockVo.getTemporaryId(), clockVo.getTemporaryName());
// 上班卡、午休下班卡、午休上班卡、下班卡
if (isClockIn) {
builderClockInData(clockVo, dto, clockTime);
} else if (ClockType.TEMPORARY_NOON_CLOCK_OUT.equals(clockType)) {
builderNoonClockOutData(clockVo, dto, clockTime);
} else if (ClockType.TEMPORARY_NOON_CLOCK_IN.equals(clockType)) {
builderNoonClockInData(clockVo, dto, clockTime);
} else if (ClockType.TEMPORARY_CLOCK_OUT.equals(clockType)) {
builderClockOutData(clockVo, dto, clockTime);
}
tempActivityCoreService.clockInTodayActivity(dto, clockType);
return R.success();
}
// 上班打卡
private void builderClockInData(TemporaryClockVo clockVo, TemporaryClockDto clockDto, Date dateTime) {
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_CLOCK_IN_BEGIN_TIME, ClockType.TEMPORARY_CLOCK_IN_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto.setTemporaryId(clockVo.getTemporaryId())
.setTemporaryName(clockVo.getTemporaryName())
.setStoreQcId(clockVo.getStoreQcId())
.setStoreName(clockVo.getStoreName())
.setClockInAddress(clockVo.getClockAddress())
.setClockInCoordinates(clockVo.getClockCoordinates())
.setClockInPhoto(clockVo.getClockPhoto())
.setClockInTime(dateTime);
}
// 午休下班卡
private void builderNoonClockOutData(TemporaryClockVo clockVo, TemporaryClockDto clockDto, Date dateTime) {
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_NOON_CLOCK_OUT_BEGIN_TIME, ClockType.TEMPORARY_NOON_CLOCK_OUT_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto.setId(clockVo.getId())
.setNoonClockOutAddress(clockVo.getClockAddress())
.setNoonClockOutCoordinates(clockVo.getClockCoordinates())
.setNoonClockOutPhoto(clockVo.getClockPhoto())
.setNoonClockOutTime(dateTime);
}
// 午休上班卡
private void builderNoonClockInData(TemporaryClockVo clockVo, TemporaryClockDto clockDto, Date dateTime) {
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_NOON_CLOCK_IN_BEGIN_TIME, ClockType.TEMPORARY_NOON_CLOCK_IN_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto.setId(clockVo.getId())
.setNoonClockInAddress(clockVo.getClockAddress())
.setNoonClockInCoordinates(clockVo.getClockCoordinates())
.setNoonClockInPhoto(clockVo.getClockPhoto())
.setNoonClockInTime(dateTime);
}
// 下班卡
private void builderClockOutData(TemporaryClockVo clockVo, TemporaryClockDto clockDto, Date dateTime) {
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_CLOCK_OUT_BEGIN_TIME, ClockType.TEMPORARY_CLOCK_OUT_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto.setId(clockVo.getId())
.setClockOutAddress(clockVo.getClockAddress())
.setClockOutCoordinates(clockVo.getClockCoordinates())
.setClockOutPhoto(clockVo.getClockPhoto())
.setClockOutTime(dateTime);
}
}
package com.wangxiaolu.promotion.controller.activity.temporary;
import com.wangxiaolu.promotion.exception.ParamException;
import com.wangxiaolu.promotion.result.basedata.R;
import com.wangxiaolu.promotion.result.basedata.RCode;
import com.wangxiaolu.promotion.enums.activity.ClockType;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityReportedDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryClockDto;
import com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryActivityDataVo;
import com.wangxiaolu.promotion.pojo.activity.temporary.vo.TemporaryClockVo;
import com.wangxiaolu.promotion.result.basedata.R;
import com.wangxiaolu.promotion.service.activity.temporary.TemporaryActivityCoreService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.Objects;
/**
......@@ -33,48 +26,6 @@ public class TemporaryActivityCoreController {
@Autowired
private TemporaryActivityCoreService tempActivityCoreService;
/**
* 促销员当日打卡信息保存
*/
@PostMapping("/today/clock")
public R clockInTodayActivity(@RequestBody @Validated TemporaryClockVo clockVo) {
clockVo.validate();
Integer clockType = clockVo.getClockType();
boolean isClockIn = ClockType.TEMPORARY_CLOCK_IN.equals(clockType);
// 上班卡必需有店铺id
if (isClockIn && StringUtils.isBlank(clockVo.getStoreQcId())) {
throw new ParamException(RCode.CLOCK_DETAIL_ERROR, null);
}
// 非上班卡必需有打卡记录ID
if (!isClockIn && Objects.isNull((clockVo.getId()))) {
throw new ParamException(RCode.CLOCK_DETAIL_ERROR, null);
}
// 根据打卡经纬度判断与打卡店铺的距离,距离超过100米不能打卡
tempActivityCoreService.clockStoreCalDistance(clockVo.getStoreQcId(),clockVo.getId(),clockVo.getClockCoordinates());
/**
* todo redis打卡-限制重复提交
* todo 后续添加,基于redis
*/
Date clockTime = new Date();
TemporaryClockDto dto = new TemporaryClockDto(clockVo.getClockType(), clockVo.getId(), clockVo.getTemporaryId(), clockVo.getTemporaryName());
// 上班卡、午休下班卡、午休上班卡、下班卡
if (isClockIn) {
builderClockInData(clockVo, dto, clockTime);
} else if (ClockType.TEMPORARY_NOON_CLOCK_OUT.equals(clockType)) {
builderNoonClockOutData(clockVo, dto, clockTime);
} else if (ClockType.TEMPORARY_NOON_CLOCK_IN.equals(clockType)) {
builderNoonClockInData(clockVo, dto, clockTime);
} else if (ClockType.TEMPORARY_CLOCK_OUT.equals(clockType)) {
builderClockOutData(clockVo, dto, clockTime);
}
tempActivityCoreService.clockInTodayActivity(dto, clockType);
return R.success();
}
/**
* 促销员[今日活动]数据保存
* 返回活动生成id
......@@ -103,59 +54,4 @@ public class TemporaryActivityCoreController {
return R.success();
}
// 上班打卡
private void builderClockInData(TemporaryClockVo clockVo, TemporaryClockDto clockDto, Date dateTime) {
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_CLOCK_IN_BEGIN_TIME, ClockType.TEMPORARY_CLOCK_IN_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto.setTemporaryId(clockVo.getTemporaryId())
.setTemporaryName(clockVo.getTemporaryName())
.setStoreQcId(clockVo.getStoreQcId())
.setStoreName(clockVo.getStoreName())
.setClockInAddress(clockVo.getClockAddress())
.setClockInCoordinates(clockVo.getClockCoordinates())
.setClockInPhoto(clockVo.getClockPhoto())
.setClockInTime(dateTime);
}
// 午休下班卡
private void builderNoonClockOutData(TemporaryClockVo clockVo, TemporaryClockDto clockDto, Date dateTime) {
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_NOON_CLOCK_OUT_BEGIN_TIME, ClockType.TEMPORARY_NOON_CLOCK_OUT_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto.setId(clockVo.getId())
.setNoonClockOutAddress(clockVo.getClockAddress())
.setNoonClockOutCoordinates(clockVo.getClockCoordinates())
.setNoonClockOutPhoto(clockVo.getClockPhoto())
.setNoonClockOutTime(dateTime);
}
// 午休上班卡
private void builderNoonClockInData(TemporaryClockVo clockVo, TemporaryClockDto clockDto, Date dateTime) {
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_NOON_CLOCK_IN_BEGIN_TIME, ClockType.TEMPORARY_NOON_CLOCK_IN_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto.setId(clockVo.getId())
.setNoonClockInAddress(clockVo.getClockAddress())
.setNoonClockInCoordinates(clockVo.getClockCoordinates())
.setNoonClockInPhoto(clockVo.getClockPhoto())
.setNoonClockInTime(dateTime);
}
// 下班卡
private void builderClockOutData(TemporaryClockVo clockVo, TemporaryClockDto clockDto, Date dateTime) {
// todo if (!DateUtils.parseTime(new Date(), ClockType.TEMPORARY_CLOCK_OUT_BEGIN_TIME, ClockType.TEMPORARY_CLOCK_OUT_END_TIME)) {
// throw new ParamException(RCode.CLOCK_DETAIL_TIME_ERROR, null);
// }
clockDto.setId(clockVo.getId())
.setClockOutAddress(clockVo.getClockAddress())
.setClockOutCoordinates(clockVo.getClockCoordinates())
.setClockOutPhoto(clockVo.getClockPhoto())
.setClockOutTime(dateTime);
}
}
......@@ -39,6 +39,10 @@ public enum ActivityPhotoType {
* 下班打卡图片
*/
CLOCK_OUT(7),
/**
* 当日销量POS机页面凭证
*/
POS_SELL_VOUCHER(7),
;
private int type;
......
......@@ -96,6 +96,12 @@ public class TemporaryActivityReportedDto {
List<String> tgcjPhotoUrls;
List<String> tgcjChangePhotoUrls;
/**
* POS机页面凭证
*/
private List<String> psvPhotoUrls;
private List<String> psvChangePhotoUrls;
private Integer sellXiangA;
private Integer sellXiangB;
private Integer sellXiangC;
......
......@@ -61,6 +61,14 @@ public class TemporaryActivityDataVo {
private List<String> tgcjPhotoUrls;
private List<String> tgcjChangePhotoUrls;
/**
* POS机页面凭证
* POS_SELL_VOUCHER
* psv
*/
private List<String> psvPhotoUrls;
private List<String> psvChangePhotoUrls;
private Integer ax;
private Integer sellXiangA;
......
......@@ -71,7 +71,7 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
@Transactional(rollbackFor = Exception.class)
@Override
public long activityDataReportedSave(TemporaryActivityReportedDto temActDto) {
// 判断是否已存在上报数据
// 判断是否已存在保存数据
TemporaryActivityReportedDto haveDate = temporaryActivityReportedDao.findOneByCurrentDate(temActDto.getTemporaryId());
if (Objects.nonNull(haveDate)) {
throw new FlowException(RCode.DATA_HAVE_ERROR, null);
......@@ -152,6 +152,8 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
throw new FlowException(RCode.STATUS_UPDATE_ERROR, null);
}
// todo 判断数据是否符合提交审批规则
// 查询促销员负责人,将人员补充到审批中
WxTemporaryInfoDto wxTemporaryInfoDto = temporaryInfoDao.selectOneById(reportedDto.getTemporaryId());
TemporaryActivityReportedDto updateDto = new TemporaryActivityReportedDto()
......@@ -225,8 +227,11 @@ public class TemporaryActivityCoreServiceImpl implements TemporaryActivityCoreSe
if (!CollectionUtils.isEmpty(temActDto.getTgcjPhotoUrls())) {
tempActivityPhotoDao.saveReportedList(temporaryId, reportedId, ActivityPhotoType.TGCJ.getType(), temActDto.getTgcjPhotoUrls(), temActDto.getTgcjChangePhotoUrls());
}
// POS机页面凭证
if (!CollectionUtils.isEmpty(temActDto.getPsvPhotoUrls())) {
tempActivityPhotoDao.saveReportedList(temporaryId, reportedId, ActivityPhotoType.POS_SELL_VOUCHER.getType(), temActDto.getPsvPhotoUrls(), temActDto.getPsvChangePhotoUrls());
}
log.info("促销员今日活动上报-图片保存成功,关联活动上报数据id[{}],数据信息:{}", temActDto.getId(), temActDto);
}
/**
......
......@@ -65,6 +65,7 @@ public class TemporaryActivityQueryServiceImpl implements TemporaryActivityQuery
dto.setTgscPhotoUrls(reportedGroup.get(ActivityPhotoType.TGSC.getType()));
dto.setTghdPhotoUrls(reportedGroup.get(ActivityPhotoType.TGHD.getType()));
dto.setTgcjPhotoUrls(reportedGroup.get(ActivityPhotoType.TGCJ.getType()));
dto.setPsvPhotoUrls(reportedGroup.get(ActivityPhotoType.POS_SELL_VOUCHER.getType()));
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论