Commit 79bb5bfe authored by 姬鋆屾's avatar 姬鋆屾
parents 933c1146 c1214625
...@@ -180,6 +180,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -180,6 +180,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query.setCheckTimeEnd(performReq.getPerformEndDate()); query.setCheckTimeEnd(performReq.getPerformEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setCheckStatus(CheckStatusEnum.已处理.getValue()); query.setCheckStatus(CheckStatusEnum.已处理.getValue());
query.setSubMethodList(Arrays.asList(1,2,3));
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING))); query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<CheckAllRecordVo> result = checkAllRecordService.getAllCheckRecord(query, pageInfo); Result<CheckAllRecordVo> result = checkAllRecordService.getAllCheckRecord(query, pageInfo);
...@@ -201,6 +202,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -201,6 +202,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query.setCheckTimeEnd(performReq.getPerformEndDate()); query.setCheckTimeEnd(performReq.getPerformEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setCheckStatus(CheckStatusEnum.已处理.getValue()); query.setCheckStatus(CheckStatusEnum.已处理.getValue());
query.setSubMethodList(Arrays.asList(1,2,3));
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING))); query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<CheckAttendRecordEntity> result = checkAttendRecordService.find(query, pageInfo, context); Result<CheckAttendRecordEntity> result = checkAttendRecordService.find(query, pageInfo, context);
...@@ -223,6 +226,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -223,6 +226,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query.setCheckTimeEnd(performReq.getPerformEndDate()); query.setCheckTimeEnd(performReq.getPerformEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setCheckStatus(CheckStatusEnum.已处理.getValue()); query.setCheckStatus(CheckStatusEnum.已处理.getValue());
query.setSubMethodList(Arrays.asList(1,2,3));
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING))); query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<CheckReviewRecordEntity> result = checkReviewRecordService.find(query, pageInfo, context); Result<CheckReviewRecordEntity> result = checkReviewRecordService.find(query, pageInfo, context);
...@@ -245,6 +249,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -245,6 +249,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query.setCheckTimeEnd(performReq.getPerformEndDate()); query.setCheckTimeEnd(performReq.getPerformEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setCheckStatus(CheckStatusEnum.已处理.getValue()); query.setCheckStatus(CheckStatusEnum.已处理.getValue());
query.setSubMethodList(Arrays.asList(1,2,3));
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING))); query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<CheckComplainRecordEntity> result = checkComplainRecordService.find(query, pageInfo, context); Result<CheckComplainRecordEntity> result = checkComplainRecordService.find(query, pageInfo, context);
...@@ -267,6 +272,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -267,6 +272,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query.setCheckTimeEnd(performReq.getPerformEndDate()); query.setCheckTimeEnd(performReq.getPerformEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setCheckStatus(CheckStatusEnum.已处理.getValue()); query.setCheckStatus(CheckStatusEnum.已处理.getValue());
query.setSubMethodList(Arrays.asList(1,2,3));
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING))); query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<CheckGoworkRecordEntity> result = checkGoworkRecordService.find(query, pageInfo, context); Result<CheckGoworkRecordEntity> result = checkGoworkRecordService.find(query, pageInfo, context);
...@@ -289,6 +295,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -289,6 +295,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query.setCheckTimeEnd(performReq.getPerformEndDate()); query.setCheckTimeEnd(performReq.getPerformEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setCheckStatus(CheckStatusEnum.已处理.getValue()); query.setCheckStatus(CheckStatusEnum.已处理.getValue());
query.setSubMethodList(Arrays.asList(1,2,3));
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING))); query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<CheckEffectRecordEntity> result = checkEffectRecordService.find(query, pageInfo, context); Result<CheckEffectRecordEntity> result = checkEffectRecordService.find(query, pageInfo, context);
...@@ -310,6 +317,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -310,6 +317,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query.setCheckTimeEnd(performReq.getPerformEndDate()); query.setCheckTimeEnd(performReq.getPerformEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setCheckStatus(CheckStatusEnum.已处理.getValue()); query.setCheckStatus(CheckStatusEnum.已处理.getValue());
query.setSubMethodList(Arrays.asList(1,2,3));
Result<CheckOtherRecordEntity> result = checkOtherRecordService.find(query, pageInfo, context); Result<CheckOtherRecordEntity> result = checkOtherRecordService.find(query, pageInfo, context);
List<PerformInfo> collect = result.getList().stream().map(item -> { List<PerformInfo> collect = result.getList().stream().map(item -> {
PerformInfo performInfo = new PerformInfo(); PerformInfo performInfo = new PerformInfo();
......
...@@ -272,6 +272,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte ...@@ -272,6 +272,7 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte
commonData.setAttendanceGroupEntity(attendanceGroupEntity); commonData.setAttendanceGroupEntity(attendanceGroupEntity);
commonData.setAttendanceDate(attendanceDate); commonData.setAttendanceDate(attendanceDate);
commonData.setDetailEntityList(detailEntityList); commonData.setDetailEntityList(detailEntityList);
commonData.setStaffId(attendanceRecordEntity.getStaffId());
workAbstract.doHandleWork(commonData); workAbstract.doHandleWork(commonData);
/* /*
......
...@@ -23,5 +23,7 @@ public class CommonData { ...@@ -23,5 +23,7 @@ public class CommonData {
private Date attendanceDate; private Date attendanceDate;
private Long staffId;
} }
...@@ -45,13 +45,10 @@ public class FixWorkAttendance extends AttendanceWorkAbstract { ...@@ -45,13 +45,10 @@ public class FixWorkAttendance extends AttendanceWorkAbstract {
} }
@Override @Override
void doHandleWork(CommonData commonData) { public void doHandleWork(CommonData commonData) {
AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(new AttendanceGroupFixedworkQuery() AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(new AttendanceGroupFixedworkQuery()
.groupId(commonData.getAttendanceGroupEntity().getId())); .groupId(commonData.getAttendanceGroupEntity().getId()));
//判断当前考勤日期为周几 //判断当前考勤日期为周几
String week = super.getWeek(commonData.getAttendanceDate()); String week = super.getWeek(commonData.getAttendanceDate());
//log.info("week:{}", week); //log.info("week:{}", week);
//通过考勤日期的星期拿到班次id. //通过考勤日期的星期拿到班次id.
......
package com.mortals.xhx.module.attendance.service.work; package com.mortals.xhx.module.attendance.service.work;
import cn.hutool.core.date.DateUtil;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.util.DateUtils;
import com.mortals.xhx.common.code.GoWorkResultEnum;
import com.mortals.xhx.common.code.MustEnum;
import com.mortals.xhx.common.code.TypeEnum; import com.mortals.xhx.common.code.TypeEnum;
import com.mortals.xhx.module.attendance.model.*;
import com.mortals.xhx.module.attendance.service.*;
import com.mortals.xhx.utils.SpringUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 自由排班 * 自由排班
*
* @author: * @author:
* @date: 2023/7/31 15:15 * @date: 2023/7/31 15:15
*/ */
@Slf4j @Slf4j
public class FreedomWorkAttendance extends AttendanceWorkAbstract { public class FreedomWorkAttendance extends AttendanceWorkAbstract {
private AttendanceGroupFreeworkService freeworkService;
private AttendanceClassService attendanceClassService;
private AttendanceRecordService attendanceRecordService;
private AttendanceGroupFreeworkSpecialService specialService;
@Autowired
private AttendanceRecordHikService recordHikService;
public FreedomWorkAttendance(int type) { public FreedomWorkAttendance(int type) {
super(type); super(type);
this.freeworkService = SpringUtils.getBean(AttendanceGroupFreeworkService.class);
this.attendanceClassService = SpringUtils.getBean(AttendanceClassService.class);
this.attendanceRecordService = SpringUtils.getBean(AttendanceRecordService.class);
} }
@Override @Override
...@@ -27,7 +58,142 @@ public class FreedomWorkAttendance extends AttendanceWorkAbstract { ...@@ -27,7 +58,142 @@ public class FreedomWorkAttendance extends AttendanceWorkAbstract {
} }
@Override @Override
void doHandleWork(CommonData commonData) { public void doHandleWork(CommonData commonData) {
AttendanceGroupFreeworkEntity attendanceGroupFreeworkEntity = freeworkService.selectOne(new AttendanceGroupFreeworkQuery()
.groupId(commonData.getAttendanceGroupEntity().getId()));
//判断当前考勤日期为周几
String week = super.getWeek(commonData.getAttendanceDate());
Boolean weekIsAttend = getWeekIsAttend(attendanceGroupFreeworkEntity, week);
if (weekIsAttend) {
//需要考勤 获取干活时长 单位小时
Integer workTime = attendanceGroupFreeworkEntity.getWorkTime();
// 查询当前这个人今日的考勤数据,并且按打卡时间进行升序排列
AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery();
recordHikQuery.setAttendanceDateStart(DateUtil.today());
recordHikQuery.setAttendanceDateEnd(DateUtil.today());
recordHikQuery.setStaffId(commonData.getStaffId());
recordHikQuery.setOrderColList(Arrays.asList(new OrderCol("attendanceDate")));
List<AttendanceRecordHikEntity> recordHikEntities = recordHikService.find(recordHikQuery);
if (!ObjectUtils.isEmpty(recordHikEntities)) {
if (recordHikEntities.size() > 1) {
//取首位 算时间差 判断时间是否够 不够 就是早退
int compare = DateUtil.compare(recordHikEntities.get(0).getAttendanceDate(), recordHikEntities.get(recordHikEntities.size()).getAttendanceDate());
AttendanceRecordDetailEntity recordDetailEntity = new AttendanceRecordDetailEntity();
recordDetailEntity.setGoWorkDate(recordHikEntities.get(0).getAttendanceDate());
recordDetailEntity.setGoWorkResult(GoWorkResultEnum.正常.getValue());
recordDetailEntity.setOffWorkDate(recordHikEntities.get(recordHikEntities.size()).getAttendanceDate());
recordDetailEntity.setOffWorkResult(GoWorkResultEnum.正常.getValue());
recordDetailEntity.setOrderNum(0);
if (compare > workTime) {
//构建详细记录 正常下班
commonData.getDetailEntityList().add(recordDetailEntity);
} else {
recordDetailEntity.setOffWorkResult(GoWorkResultEnum.早退.getValue());
}
commonData.getDetailEntityList().add(recordDetailEntity);
} else {
//只有一条 缺下班卡
AttendanceRecordDetailEntity recordDetailEntity = new AttendanceRecordDetailEntity();
recordDetailEntity.setGoWorkDate(recordHikEntities.get(0).getAttendanceDate());
recordDetailEntity.setGoWorkResult(GoWorkResultEnum.正常.getValue());
recordDetailEntity.setOffWorkDate(null);
recordDetailEntity.setOffWorkResult(GoWorkResultEnum.缺卡.getValue());
recordDetailEntity.setOrderNum(0);
commonData.getDetailEntityList().add(recordDetailEntity);
}
} else {
AttendanceRecordDetailEntity recordDetailEntity = new AttendanceRecordDetailEntity();
recordDetailEntity.setGoWorkDate(null);
recordDetailEntity.setGoWorkResult(GoWorkResultEnum.缺卡.getValue());
recordDetailEntity.setOffWorkDate(null);
recordDetailEntity.setOffWorkResult(GoWorkResultEnum.缺卡.getValue());
recordDetailEntity.setOrderNum(0);
commonData.getDetailEntityList().add(recordDetailEntity);
}
}
//特殊日期考勤配置
List<AttendanceGroupFreeworkSpecialEntity> specialEntities = specialService.find(new AttendanceGroupFreeworkSpecialQuery().freeWorkId(attendanceGroupFreeworkEntity.getId()));
if (!ObjectUtils.isEmpty(specialEntities)) {
//分组 需要考勤与不需要考勤
Map<Boolean, List<AttendanceGroupFreeworkSpecialEntity>> collect = specialEntities.stream().collect(Collectors.partitioningBy(item -> item.getMust() == MustEnum..getValue()));
List<AttendanceGroupFreeworkSpecialEntity> mustList = collect.get(true);
if(!ObjectUtils.isEmpty(mustList)){
//需要打卡
for (AttendanceGroupFreeworkSpecialEntity specialEntity : mustList) {
}
}
List<AttendanceGroupFreeworkSpecialEntity> mustNotList = collect.get(false);
}
}
/**
* 获取当前日期是否需要考勤,需要的话返回
*
* @return
*/
protected Boolean getWeekIsAttend(AttendanceGroupFreeworkEntity attendanceGroupFreeworkEntity, String week) {
switch (week) {
case "星期一":
if (attendanceGroupFreeworkEntity.getMonday() == 0) {
return false;
} else {
return true;
}
case "星期二":
if (attendanceGroupFreeworkEntity.getTuesday() == 0) {
return false;
} else {
return true;
}
case "星期三":
if (attendanceGroupFreeworkEntity.getWednesday() == 0) {
return false;
} else {
return true;
}
case "星期四":
if (attendanceGroupFreeworkEntity.getThursday() == 0) {
return false;
} else {
return true;
}
case "星期五":
if (attendanceGroupFreeworkEntity.getFriday() == 0) {
return false;
} else {
return true;
}
case "星期六":
if (attendanceGroupFreeworkEntity.getSaturday() == 0) {
return false;
} else {
return true;
}
case "星期日":
if (attendanceGroupFreeworkEntity.getSunday() == 0) {
return false;
} else {
return true;
}
default:
return false;
}
} }
} }
...@@ -28,7 +28,7 @@ public class ScheduleWorkAttendance extends AttendanceWorkAbstract { ...@@ -28,7 +28,7 @@ public class ScheduleWorkAttendance extends AttendanceWorkAbstract {
} }
@Override @Override
void doHandleWork(CommonData commonData) { public void doHandleWork(CommonData commonData) {
//todo
} }
} }
...@@ -40,4 +40,7 @@ public class CheckAllRecordQuery { ...@@ -40,4 +40,7 @@ public class CheckAllRecordQuery {
private transient List<OrderCol> orderColList = new ArrayList(); private transient List<OrderCol> orderColList = new ArrayList();
/** 扣分方式(1.系统自动,2.人工添加,3.大厅巡查)列表 */
private List <Integer> subMethodList;
} }
...@@ -74,6 +74,13 @@ ...@@ -74,6 +74,13 @@
<if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if> <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
<if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if> <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
) AS a ) AS a
where 1=1
<if test="subMethodList != null">
and subMethod in
<foreach collection="subMethodList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="orderColList != null and !orderColList.isEmpty()"> <if test="orderColList != null and !orderColList.isEmpty()">
order by order by
<trim suffixOverrides="," suffix=""> <trim suffixOverrides="," suffix="">
...@@ -159,6 +166,13 @@ ...@@ -159,6 +166,13 @@
<if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if> <if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
<if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if> <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
) AS a ) AS a
where 1=1
<if test="subMethodList != null">
and subMethod in
<foreach collection="subMethodList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
</select> </select>
<select id="getScoreSummary" parameterType="com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery" resultType="com.mortals.xhx.module.check.model.vo.CheckAllScoreSummaryVo"> <select id="getScoreSummary" parameterType="com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery" resultType="com.mortals.xhx.module.check.model.vo.CheckAllScoreSummaryVo">
......
...@@ -26,8 +26,8 @@ ...@@ -26,8 +26,8 @@
ANY_VALUE(DATE_FORMAT(checkTime,'%Y')) as `year`, ANY_VALUE(DATE_FORMAT(checkTime,'%Y')) as `year`,
ANY_VALUE(DATE_FORMAT(checkTime,'%m')) as `month`, ANY_VALUE(DATE_FORMAT(checkTime,'%m')) as `month`,
ANY_VALUE(DATE_FORMAT(checkTime,'%d')) as `day`, ANY_VALUE(DATE_FORMAT(checkTime,'%d')) as `day`,
SUM(CASE subAddType WHEN 1 THEN score ELSE 0 END) as attendScoreAdd, SUM(CASE subAddType WHEN 1 THEN score ELSE 0 END) as goworkScoreAdd,
SUM(CASE subAddType WHEN 2 THEN score ELSE 0 END) as attendScoreSub SUM(CASE subAddType WHEN 2 THEN score ELSE 0 END) as goworkScoreSub
FROM FROM
mortals_xhx_check_gowork_record mortals_xhx_check_gowork_record
WHERE checkStatus = 2 and auditStatus = 1 WHERE checkStatus = 2 and auditStatus = 1
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment