提交 242d05fb authored 作者: 吕本才's avatar 吕本才

feat(promotion): 并优化打卡逻辑,打卡和上报的图片类型别混了

上级 81c2f59e
...@@ -140,6 +140,7 @@ public class TemporaryActivityClockCoreController { ...@@ -140,6 +140,7 @@ public class TemporaryActivityClockCoreController {
} }
TemporaryClockDto dto = new TemporaryClockDto(clockVo.getId(), clockVo.getTemporaryId(), clockVo.getClockPhoto(), clockVo.getPhotoType()); TemporaryClockDto dto = new TemporaryClockDto(clockVo.getId(), clockVo.getTemporaryId(), clockVo.getClockPhoto(), clockVo.getPhotoType());
tempActivityClockCoreService.updateClockPhoto(dto); tempActivityClockCoreService.updateClockPhoto(dto);
return R.success(); return R.success();
} }
......
...@@ -7,6 +7,7 @@ import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityPhotoDao; ...@@ -7,6 +7,7 @@ import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityPhotoDao;
import com.wangxiaolu.promotion.domain.activity.mapper.TemporaryActivityPhotoMapper; import com.wangxiaolu.promotion.domain.activity.mapper.TemporaryActivityPhotoMapper;
import com.wangxiaolu.promotion.domain.activity.mapper.entity.TemporaryActivityPhotoDO; import com.wangxiaolu.promotion.domain.activity.mapper.entity.TemporaryActivityPhotoDO;
import com.wangxiaolu.promotion.domain.activity.wrapperQo.TemporaryPhotoWrapper; import com.wangxiaolu.promotion.domain.activity.wrapperQo.TemporaryPhotoWrapper;
import com.wangxiaolu.promotion.enums.activity.ActivityPhotoType;
import com.wangxiaolu.promotion.exception.ParamException; import com.wangxiaolu.promotion.exception.ParamException;
import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityPhotoDto; import com.wangxiaolu.promotion.pojo.activity.temporary.dto.TemporaryActivityPhotoDto;
import com.wangxiaolu.promotion.result.basedata.RCode; import com.wangxiaolu.promotion.result.basedata.RCode;
...@@ -100,7 +101,9 @@ public class TemporaryActivityPhotoDaoImpl implements TemporaryActivityPhotoDao ...@@ -100,7 +101,9 @@ public class TemporaryActivityPhotoDaoImpl implements TemporaryActivityPhotoDao
@Override @Override
public Map<Long, Map<Integer, String>> findClockPhotoGroupByClockIds(List<Long> clockIds) { public Map<Long, Map<Integer, String>> findClockPhotoGroupByClockIds(List<Long> clockIds) {
LambdaQueryWrapper<TemporaryActivityPhotoDO> wq = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TemporaryActivityPhotoDO> wq = new LambdaQueryWrapper<>();
wq.in(TemporaryActivityPhotoDO::getClockId, clockIds).eq(TemporaryActivityPhotoDO::getIsDelete, StatusType.VALID.getType()); wq.in(TemporaryActivityPhotoDO::getClockId, clockIds)
.le(TemporaryActivityPhotoDO::getType, ActivityPhotoType.CLOCK_OUT.getType())
.eq(TemporaryActivityPhotoDO::getIsDelete, StatusType.VALID.getType());
List<TemporaryActivityPhotoDO> dos = temporaryActivityPhotoMapper.selectList(wq); List<TemporaryActivityPhotoDO> dos = temporaryActivityPhotoMapper.selectList(wq);
if (CollectionUtils.isEmpty(dos)) { if (CollectionUtils.isEmpty(dos)) {
return null; return null;
...@@ -196,6 +199,7 @@ public class TemporaryActivityPhotoDaoImpl implements TemporaryActivityPhotoDao ...@@ -196,6 +199,7 @@ public class TemporaryActivityPhotoDaoImpl implements TemporaryActivityPhotoDao
public Map<Integer, TemporaryActivityPhotoDto> findClockPhotoGroupByClockId(Long clockId) { public Map<Integer, TemporaryActivityPhotoDto> findClockPhotoGroupByClockId(Long clockId) {
LambdaQueryWrapper<TemporaryActivityPhotoDO> wq = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TemporaryActivityPhotoDO> wq = new LambdaQueryWrapper<>();
wq.eq(TemporaryActivityPhotoDO::getClockId, clockId) wq.eq(TemporaryActivityPhotoDO::getClockId, clockId)
.le(TemporaryActivityPhotoDO::getType, ActivityPhotoType.CLOCK_OUT.getType())
.eq(TemporaryActivityPhotoDO::getIsDelete, StatusType.VALID.getType()); .eq(TemporaryActivityPhotoDO::getIsDelete, StatusType.VALID.getType());
List<TemporaryActivityPhotoDO> dos = temporaryActivityPhotoMapper.selectList(wq); List<TemporaryActivityPhotoDO> dos = temporaryActivityPhotoMapper.selectList(wq);
List<TemporaryActivityPhotoDto> photoDtos = transitionDtos(dos); List<TemporaryActivityPhotoDto> photoDtos = transitionDtos(dos);
......
package com.wangxiaolu.promotion.domain.activity.dao.impl; package com.wangxiaolu.promotion.domain.activity.dao.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.wangxiaolu.promotion.common.util.BeanUtils; import com.wangxiaolu.promotion.common.util.BeanUtils;
import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityTaskClockDao; import com.wangxiaolu.promotion.domain.activity.dao.TemporaryActivityTaskClockDao;
...@@ -74,7 +75,9 @@ public class TemporaryActivityTaskClockDaoImpl implements TemporaryActivityTaskC ...@@ -74,7 +75,9 @@ public class TemporaryActivityTaskClockDaoImpl implements TemporaryActivityTaskC
TemporaryActivityTaskClockDO updateTaskClockDo = new TemporaryActivityTaskClockDO(); TemporaryActivityTaskClockDO updateTaskClockDo = new TemporaryActivityTaskClockDO();
BeanUtils.copyProperties(updateTaskClockDto, updateTaskClockDo); BeanUtils.copyProperties(updateTaskClockDto, updateTaskClockDo);
temporaryActivityTaskClockMapper.updateById(updateTaskClockDo); Wrapper<TemporaryActivityTaskClockDO> wraper = new LambdaQueryWrapper<TemporaryActivityTaskClockDO>()
.eq(TemporaryActivityTaskClockDO::getClockId, updateTaskClockDto.getClockId());
temporaryActivityTaskClockMapper.update(updateTaskClockDo,wraper);
} }
} }
...@@ -44,7 +44,6 @@ public enum ActivityPhotoType { ...@@ -44,7 +44,6 @@ public enum ActivityPhotoType {
*/ */
POS_SELL_VOUCHER(7), POS_SELL_VOUCHER(7),
/** /**
* POS照片 * POS照片
*/ */
......
...@@ -14,21 +14,30 @@ public interface ClockType { ...@@ -14,21 +14,30 @@ public interface ClockType {
String TEMPORARY_CLOCK_IN_BEGIN_TIME = "09:30:00"; String TEMPORARY_CLOCK_IN_BEGIN_TIME = "09:30:00";
String TEMPORARY_CLOCK_IN_END_TIME = "10:00:00"; String TEMPORARY_CLOCK_IN_END_TIME = "10:00:00";
/**
* 午休下班卡
*/
Integer TEMPORARY_NOON_CLOCK_OUT = 2; Integer TEMPORARY_NOON_CLOCK_OUT = 2;
String TEMPORARY_NOON_CLOCK_OUT_BEGIN_TIME = "13:00:00"; String TEMPORARY_NOON_CLOCK_OUT_BEGIN_TIME = "13:00:00";
String TEMPORARY_NOON_CLOCK_OUT_END_TIME = "13:30:00"; String TEMPORARY_NOON_CLOCK_OUT_END_TIME = "13:30:00";
/**
* 午休上班卡
*/
Integer TEMPORARY_NOON_CLOCK_IN = 3; Integer TEMPORARY_NOON_CLOCK_IN = 3;
String TEMPORARY_NOON_CLOCK_IN_BEGIN_TIME = "14:30:00"; String TEMPORARY_NOON_CLOCK_IN_BEGIN_TIME = "14:30:00";
String TEMPORARY_NOON_CLOCK_IN_END_TIME = "15:00:00"; String TEMPORARY_NOON_CLOCK_IN_END_TIME = "15:00:00";
/**
* 下班卡
*/
Integer TEMPORARY_CLOCK_OUT = 4; Integer TEMPORARY_CLOCK_OUT = 4;
String TEMPORARY_CLOCK_OUT_BEGIN_TIME = "19:00:00"; String TEMPORARY_CLOCK_OUT_BEGIN_TIME = "19:00:00";
String TEMPORARY_CLOCK_OUT_END_TIME = "23:59:00"; String TEMPORARY_CLOCK_OUT_END_TIME = "23:59:00";
/** /**
* 随机打卡 * 随机打卡
*/ */
Integer TEMPORARY_RAND_CLOCK = 8; Integer TEMPORARY_RAND_CLOCK = 10;
String TEMPORARY_RAND_CLOCK_BEGIN_TIME = "17:30:00"; String TEMPORARY_RAND_CLOCK_BEGIN_TIME = "17:30:00";
String TEMPORARY_RAND_CLOCK_END_TIME = "19:30:00"; String TEMPORARY_RAND_CLOCK_END_TIME = "19:30:00";
......
...@@ -61,4 +61,9 @@ public class TemporaryActivityTaskClockRes { ...@@ -61,4 +61,9 @@ public class TemporaryActivityTaskClockRes {
private Date clockTime; private Date clockTime;
private List<String> clockPhotos; private List<String> clockPhotos;
private Date requiredlockTime;
private Boolean editableFlag = false;
} }
...@@ -79,7 +79,7 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary ...@@ -79,7 +79,7 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
taskClockDO.setClockId(dto.getId()) taskClockDO.setClockId(dto.getId())
.setTemporaryId(dto.getTemporaryId()) .setTemporaryId(dto.getTemporaryId())
.setTemporaryName(dto.getTemporaryName()) .setTemporaryName(dto.getTemporaryName())
.setReportedId(dto.getReportedId()) .setReportedId(null)
.setPlanId(dto.getPlanId()) .setPlanId(dto.getPlanId())
.setClockTime(null) .setClockTime(null)
.setTaskType(ActivityPhotoType.RANDOM_TASK.getType()) .setTaskType(ActivityPhotoType.RANDOM_TASK.getType())
...@@ -118,7 +118,8 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary ...@@ -118,7 +118,8 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
taskClockDO.setClockId(dto.getId()) taskClockDO.setClockId(dto.getId())
.setTemporaryId(dto.getTemporaryId()) .setTemporaryId(dto.getTemporaryId())
.setTemporaryName(dto.getTemporaryName()) .setTemporaryName(dto.getTemporaryName())
.setReportedId(dto.getReportedId()) // .setReportedId(dto.getReportedId())
.setReportedId(null)
.setPlanId(dto.getPlanId()) .setPlanId(dto.getPlanId())
.setClockTime(null) .setClockTime(null)
.setTaskType(ActivityPhotoType.POS_PHOTO.getType()) .setTaskType(ActivityPhotoType.POS_PHOTO.getType())
...@@ -169,6 +170,7 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary ...@@ -169,6 +170,7 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
BeanUtils.copyProperties(clockVo, taskClockDO); BeanUtils.copyProperties(clockVo, taskClockDO);
// 更新 任务状态为未完成,打卡时间为当前时间 // 更新 任务状态为未完成,打卡时间为当前时间
taskClockDO.setTaskStatus(ActivityClockTaskStatus.COMPLETED.getType()); taskClockDO.setTaskStatus(ActivityClockTaskStatus.COMPLETED.getType());
taskClockDO.setReportedId(null);
taskClockDO.setClockTime(new Date()); taskClockDO.setClockTime(new Date());
temporaryActivityTaskClockDao.update(taskClockDO); temporaryActivityTaskClockDao.update(taskClockDO);
...@@ -209,6 +211,15 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary ...@@ -209,6 +211,15 @@ public class TemporaryActivityTaskClockServiceImpl extends ServiceImpl<Temporary
if (taskClockDO != null) { if (taskClockDO != null) {
TemporaryActivityTaskClockRes res = new TemporaryActivityTaskClockRes(); TemporaryActivityTaskClockRes res = new TemporaryActivityTaskClockRes();
BeanUtils.copyProperties(taskClockDO, res); BeanUtils.copyProperties(taskClockDO, res);
// 是否可以编辑
Date requiredlockTime = res.getRequiredlockTime();
if (requiredlockTime != null) {
Date now = new Date();
if (now.compareTo(requiredlockTime) > 0 && now.compareTo(DateUtil.offsetMinute(requiredlockTime,15)) < 0) {
res.setEditableFlag(true);
}
}
// 查询图片 // 查询图片
TemporaryPhotoWrapper photoWrapper = new TemporaryPhotoWrapper() TemporaryPhotoWrapper photoWrapper = new TemporaryPhotoWrapper()
.setClockId(taskClockDO.getClockId()) .setClockId(taskClockDO.getClockId())
......
...@@ -168,4 +168,9 @@ public class TemporaryActivityTaskClockSocketHandler extends TextWebSocketHandle ...@@ -168,4 +168,9 @@ public class TemporaryActivityTaskClockSocketHandler extends TextWebSocketHandle
} }
return 0; return 0;
} }
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
log.error("用户[" + session.getAttributes().get("userId") + "]异常断开");
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论