新金湾,新考勤bug修复

This commit is contained in:
guoshengxiong 2025-06-25 16:44:48 +08:00
parent 549c6fd610
commit 10d2b693b2
4 changed files with 10 additions and 5 deletions

View File

@ -55,14 +55,14 @@ public class WorkerAttendanceRuleV2ChangeLog implements Serializable {
@ApiModelProperty(value = "生效时间开始") @ApiModelProperty(value = "生效时间开始")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private java.util.Date effect_begin; private java.util.Date effectBegin;
/** /**
* 生效时间结束 * 生效时间结束
*/ */
@ApiModelProperty(value = "生效时间结束") @ApiModelProperty(value = "生效时间结束")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private java.util.Date effect_end; private java.util.Date effectEnd;
/** /**
* 创建时间 * 创建时间
*/ */

View File

@ -19,14 +19,14 @@
<update id="updateEndTime"> <update id="updateEndTime">
UPDATE worker_attendance_rule_v2_change_log w1 UPDATE worker_attendance_rule_v2_change_log w1
JOIN ( JOIN (
SELECT worker_id, MAX(effect_end) AS latest_time SELECT worker_id, MAX(effect_begin) AS latest_time
FROM worker_attendance_rule_v2_change_log FROM worker_attendance_rule_v2_change_log
where worker_id in where worker_id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")"> <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item} #{item}
</foreach> </foreach>
GROUP BY worker_id GROUP BY worker_id
) w2 ON w1.worker_id = w2.worker_id AND w1.effect_end = w2.latest_time ) w2 ON w1.worker_id = w2.worker_id AND w1.effect_begin = w2.latest_time
SET w1.effect_end = NOW() SET w1.effect_end = NOW()
</update> </update>
</mapper> </mapper>

View File

@ -19,6 +19,7 @@ import com.zhgd.xmgl.util.RefUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -51,7 +52,7 @@ public class WorkerAttendanceRuleV2ChangeLogServiceImpl extends ServiceImpl<Work
private QueryWrapper<WorkerAttendanceRuleV2ChangeLogVo> getQueryWrapper(HashMap<String, Object> param) { private QueryWrapper<WorkerAttendanceRuleV2ChangeLogVo> getQueryWrapper(HashMap<String, Object> param) {
QueryWrapper<WorkerAttendanceRuleV2ChangeLogVo> queryWrapper = QueryGenerator.initPageQueryWrapper(WorkerAttendanceRuleV2ChangeLogVo.class, param, true); QueryWrapper<WorkerAttendanceRuleV2ChangeLogVo> queryWrapper = QueryGenerator.initPageQueryWrapper(WorkerAttendanceRuleV2ChangeLogVo.class, param, true);
queryWrapper.orderByDesc(RefUtil.fieldNameUlc(WorkerAttendanceRuleV2ChangeLogVo::getId)); queryWrapper.orderByDesc(RefUtil.fieldNameUlc(WorkerAttendanceRuleV2ChangeLogVo::getEffectBegin));
return queryWrapper; return queryWrapper;
} }
@ -104,6 +105,7 @@ public class WorkerAttendanceRuleV2ChangeLogServiceImpl extends ServiceImpl<Work
BeanUtil.copyProperties(ruleV2, log); BeanUtil.copyProperties(ruleV2, log);
log.setId(null); log.setId(null);
log.setWorkerId(workerId); log.setWorkerId(workerId);
log.setEffectBegin(new Date());
return log; return log;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
this.saveBatch(changeLogs); this.saveBatch(changeLogs);

View File

@ -240,6 +240,9 @@ public class WorkerDailyAttendanceStatisticsV2ServiceImpl extends ServiceImpl<Wo
if (attendances.size() > 1) { if (attendances.size() > 1) {
//计算跨夜工时按零点结算到前后两天 //计算跨夜工时按零点结算到前后两天
for (int i = 1; i < attendances.size(); i++) { for (int i = 1; i < attendances.size(); i++) {
if (attendances.get(i).getPassType() != 2) {
continue;
}
long betweenMs = DateUtil.betweenMs(attendances.get(i - 1).getDate(), attendances.get(i).getDate()); long betweenMs = DateUtil.betweenMs(attendances.get(i - 1).getDate(), attendances.get(i).getDate());
BigDecimal hours = new BigDecimal(betweenMs).divide(new BigDecimal(DateUnit.HOUR.getMillis()), 2, RoundingMode.HALF_UP); BigDecimal hours = new BigDecimal(betweenMs).divide(new BigDecimal(DateUnit.HOUR.getMillis()), 2, RoundingMode.HALF_UP);
hour = hour.add(hours); hour = hour.add(hours);