|
@@ -67,17 +67,17 @@ public class SignInService extends ServiceImpl<SignInMapper, SignIn> {
|
|
|
public RestResponse signIn(SignIn entry) {
|
|
|
SignIn signIn = getOne(entry.getMtCompanyId(), entry.getProjectId(), entry.getUserId());
|
|
|
if (ObjectUtil.isNotEmpty(signIn)) {
|
|
|
- LocalTime approachTime = signIn.getApproachTime();
|
|
|
- LocalTime leavingTime = signIn.getLeavingTime();
|
|
|
+ String approachTime = signIn.getApproachTime();
|
|
|
+ String leavingTime = signIn.getLeavingTime();
|
|
|
if (approachTime != null && leavingTime != null) {
|
|
|
//今日已签到
|
|
|
return RestResponse.success(null, MessageUtils.get("msg.sign.limit"));
|
|
|
}
|
|
|
- signIn.setLeavingTime(LocalTime.now());
|
|
|
+ signIn.setLeavingTime(LocalTime.now().toString());
|
|
|
saveOrUpdate(signIn);
|
|
|
} else {
|
|
|
entry.setSignDate(LocalDate.now());
|
|
|
- entry.setApproachTime(LocalTime.now());
|
|
|
+ entry.setApproachTime(LocalTime.now().toString());
|
|
|
save(entry);
|
|
|
}
|
|
|
return RestResponse.success(null, MessageUtils.get("msg.sign.success"));
|
|
@@ -166,14 +166,26 @@ public class SignInService extends ServiceImpl<SignInMapper, SignIn> {
|
|
|
paramMap.put("projectId", request.getId());
|
|
|
paramMap.put("userId", request.getUserId());
|
|
|
//查询签到记录
|
|
|
- List<SignRecord> signRecord = baseMapper.findByCondition(paramMap);
|
|
|
+ List<SignRecord> signRecordList = baseMapper.findByCondition(paramMap);
|
|
|
List<SignRecordGroupResult> results = new ArrayList<>();
|
|
|
+ List<String> userNames = signRecordList.stream().map(SignRecord::getUserName).distinct().collect(Collectors.toList());
|
|
|
//分组签到记录
|
|
|
- Map<LocalDate, List<SignRecord>> collect = signRecord.stream().collect(Collectors.groupingBy(SignRecord::getSignDate));
|
|
|
- for (Map.Entry<LocalDate, List<SignRecord>> entry : collect.entrySet()) {
|
|
|
+ Map<LocalDate, List<SignRecord>> signRecordMap = signRecordList.stream().collect(Collectors.groupingBy(SignRecord::getSignDate));
|
|
|
+ for (Map.Entry<LocalDate, List<SignRecord>> entry : signRecordMap.entrySet()) {
|
|
|
+ LocalDate signDate = entry.getKey();
|
|
|
+ List<SignRecord> signRecords = entry.getValue();
|
|
|
+ for (String name : userNames) {
|
|
|
+ Optional<SignRecord> first = signRecords.stream().filter(sign -> Objects.equals(name, sign.getUserName())).findFirst();
|
|
|
+ if (!first.isPresent()) {
|
|
|
+ SignRecord record = new SignRecord();
|
|
|
+ record.setUserName(name);
|
|
|
+ record.setSignDate(signDate);
|
|
|
+ signRecords.add(record);
|
|
|
+ }
|
|
|
+ }
|
|
|
SignRecordGroupResult result = new SignRecordGroupResult();
|
|
|
- result.setSignDate(entry.getKey());
|
|
|
- result.setSignRecords(entry.getValue());
|
|
|
+ result.setSignDate(signDate);
|
|
|
+ result.setSignRecords(signRecords);
|
|
|
results.add(result);
|
|
|
}
|
|
|
results.sort(Comparator.comparing(SignRecordGroupResult::getSignDate).reversed());
|