|
@@ -1,5 +1,6 @@
|
|
package com.qmth.sop.business.service.impl;
|
|
package com.qmth.sop.business.service.impl;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
@@ -88,6 +89,9 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
|
|
@Resource
|
|
@Resource
|
|
private TBUserArchivesAllocationService tbUserArchivesAllocationService;
|
|
private TBUserArchivesAllocationService tbUserArchivesAllocationService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private TBCrmDetailService tbCrmDetailService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public DingElementResult findDingElements(String sopNo, Long userId) {
|
|
public DingElementResult findDingElements(String sopNo, Long userId) {
|
|
|
|
|
|
@@ -304,8 +308,6 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
|
|
|
|
|
|
Long signTime = dingSaveParam.getSignTime();
|
|
Long signTime = dingSaveParam.getSignTime();
|
|
SopPlanTimeResult sopPlan = tbSopInfoService.querySopPlanTime(sopNo);
|
|
SopPlanTimeResult sopPlan = tbSopInfoService.querySopPlanTime(sopNo);
|
|
- // 打卡异常
|
|
|
|
- boolean dingException = !(sopPlan.getBeginTime() <= signTime && signTime <= sopPlan.getEndTime());
|
|
|
|
|
|
|
|
DingDateTypeEnum dateType = sysDingDateService.getDingDateType(DateDisposeUtils.timestampToLocalDate(signTime));
|
|
DingDateTypeEnum dateType = sysDingDateService.getDingDateType(DateDisposeUtils.timestampToLocalDate(signTime));
|
|
|
|
|
|
@@ -349,7 +351,10 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
|
|
String crmNo = sopCrmInfo.getCrmNo();
|
|
String crmNo = sopCrmInfo.getCrmNo();
|
|
Long serviceId = sopCrmInfo.getServiceUnitId();
|
|
Long serviceId = sopCrmInfo.getServiceUnitId();
|
|
Long flowId = sopCrmInfo.getFlowId();
|
|
Long flowId = sopCrmInfo.getFlowId();
|
|
- SopRoleTypeEnum roleType = tbUserArchivesAllocationService.findRoleTypeByUserCrm(userId, crmNo);
|
|
|
|
|
|
+ List<SopRoleTypeEnum> roleType = tbUserArchivesAllocationService.findSopRoleTypeByUserSopNo(userId, sopNo);
|
|
|
|
+ if (CollectionUtils.isEmpty(roleType)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到用户在当前sop的身份信息");
|
|
|
|
+ }
|
|
String signDate = DateFormatUtils.format(signTime, SystemConstant.DEFAULT_DATE_DAY_PATTERN);
|
|
String signDate = DateFormatUtils.format(signTime, SystemConstant.DEFAULT_DATE_DAY_PATTERN);
|
|
String signYear = DateFormatUtils.format(signTime, SystemConstant.DEFAULT_DATE_YEAR_PATTERN);
|
|
String signYear = DateFormatUtils.format(signTime, SystemConstant.DEFAULT_DATE_YEAR_PATTERN);
|
|
String currentDayStr = DateFormatUtils.format(System.currentTimeMillis(), SystemConstant.DEFAULT_DATE_DAY_PATTERN);
|
|
String currentDayStr = DateFormatUtils.format(System.currentTimeMillis(), SystemConstant.DEFAULT_DATE_DAY_PATTERN);
|
|
@@ -388,13 +393,12 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
|
|
tbDing.setCrmNo(crmNo);
|
|
tbDing.setCrmNo(crmNo);
|
|
tbDing.setServiceId(serviceId);
|
|
tbDing.setServiceId(serviceId);
|
|
tbDing.setUserArchivesId(userArchivesId);
|
|
tbDing.setUserArchivesId(userArchivesId);
|
|
- tbDing.setSopRoleType(roleType);
|
|
|
|
|
|
+ tbDing.setSopRoleType(JSON.toJSONString(roleType));
|
|
tbDing.setUserId(userId);
|
|
tbDing.setUserId(userId);
|
|
tbDing.setFlowId(flowId);
|
|
tbDing.setFlowId(flowId);
|
|
tbDing.setSignDate(signDate);
|
|
tbDing.setSignDate(signDate);
|
|
tbDing.setSignYear(signYear);
|
|
tbDing.setSignYear(signYear);
|
|
tbDing.setDateType(dateType);
|
|
tbDing.setDateType(dateType);
|
|
- tbDing.setDingException(dingException);
|
|
|
|
switch (signType) {
|
|
switch (signType) {
|
|
case IN: // 签到打卡
|
|
case IN: // 签到打卡
|
|
tbDing.setSignInTime(signTime);
|
|
tbDing.setSignInTime(signTime);
|
|
@@ -418,7 +422,6 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
|
|
throw ExceptionResultEnum.ERROR.exception(String.format("用户id为[%s],sop单号为[%s],在[%s]的打卡记录异常", userId, sopNo, signDate));
|
|
throw ExceptionResultEnum.ERROR.exception(String.format("用户id为[%s],sop单号为[%s],在[%s]的打卡记录异常", userId, sopNo, signDate));
|
|
}
|
|
}
|
|
TBDing tbDing = tbDingList.get(0);
|
|
TBDing tbDing = tbDingList.get(0);
|
|
- tbDing.setDingException(tbDing.getDingException() && dingException);
|
|
|
|
switch (signType) {
|
|
switch (signType) {
|
|
case IN: // 签到打卡
|
|
case IN: // 签到打卡
|
|
tbDing.setSignInTime(signTime);
|
|
tbDing.setSignInTime(signTime);
|
|
@@ -435,6 +438,14 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
|
|
tbDing.setFaceOutPass(facePass);
|
|
tbDing.setFaceOutPass(facePass);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
+ Long signInTime = tbDing.getSignInTime();
|
|
|
|
+ Long signOutTime = tbDing.getSignOutTime();
|
|
|
|
+ if (signInTime != null && signInTime > 0 && signOutTime != null && signOutTime > 0) {
|
|
|
|
+ // 打卡异常 (两个打卡时间均不在时间点 -> 异常)
|
|
|
|
+ boolean signInException = !(sopPlan.getBeginTime() <= signInTime && signInTime <= sopPlan.getEndTime());
|
|
|
|
+ boolean signOutException = !(sopPlan.getBeginTime() <= signOutTime && signOutTime <= sopPlan.getEndTime());
|
|
|
|
+ tbDing.setDingException(signInException && signOutException);
|
|
|
|
+ }
|
|
this.updateById(tbDing);
|
|
this.updateById(tbDing);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -670,7 +681,12 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
|
|
addDing.setServiceId(tbCrm.getServiceId());
|
|
addDing.setServiceId(tbCrm.getServiceId());
|
|
addDing.setUserId(userId);
|
|
addDing.setUserId(userId);
|
|
addDing.setUserArchivesId(tbUserArchivesService.findByUserId(userId).getId());
|
|
addDing.setUserArchivesId(tbUserArchivesService.findByUserId(userId).getId());
|
|
- addDing.setSopRoleType(tbUserArchivesAllocationService.findRoleTypeByUserCrm(userId, crmNo));
|
|
|
|
|
|
+ List<SopRoleTypeEnum> roleType = tbUserArchivesAllocationService.findSopRoleTypeByUserSopNo(
|
|
|
|
+ userId, sopNo);
|
|
|
|
+ if (CollectionUtils.isEmpty(roleType)) {
|
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("未找到用户在当前sop的身份信息");
|
|
|
|
+ }
|
|
|
|
+ addDing.setSopRoleType(JSON.toJSONString(roleType));
|
|
addDing.setFlowId(sopCrmInfo.getFlowId());
|
|
addDing.setFlowId(sopCrmInfo.getFlowId());
|
|
addDing.setSignYear(signYear);
|
|
addDing.setSignYear(signYear);
|
|
addDing.setSignDate(signDay);
|
|
addDing.setSignDate(signDay);
|