lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentPunchController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentPunch.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentPunchMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentPunchMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentPunchService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentPunchServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentPunchController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,70 @@ package org.jeecg.modules.mdc.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.modules.mdc.entity.MdcEquipmentPunch; import org.jeecg.modules.mdc.service.IMdcEquipmentPunchService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; /** * @Description: mdc_equipment_punch * @Author: jeecg-boot * @Date: 2025-06-09 * @Version: V1.0 */ @Api(tags="ä¸ä¸çæå¡è®°å½è¡¨") @RestController @RequestMapping("/mdcEquipmentPunch") @Slf4j public class MdcEquipmentPunchController extends JeecgController<MdcEquipmentPunch, IMdcEquipmentPunchService> { @Autowired private IMdcEquipmentPunchService mdcEquipmentPunchService; private static final String msg = "æå¡æåï¼"; /** * æ¥è¯¢å½åç»å½äººæè´è´£è®¾å¤æå¡æ åµ * * @return */ @ApiOperation(value="æ¥è¯¢å½åç»å½äººæè´è´£è®¾å¤æå¡æ åµ", notes="æ¥è¯¢å½åç»å½äººæè´è´£è®¾å¤æå¡æ åµ") @GetMapping(value = "/list") public Result<List<MdcEquipmentPunch>> queryList() { return Result.OK(mdcEquipmentPunchService.queryList()); } /** * ä¸çæå¡ * * @param mdcEquipmentPunch * @return */ @AutoLog(value = "ä¸çæå¡") @ApiOperation(value="ä¸çæå¡", notes="ä¸çæå¡") @PostMapping(value = "/workUp") public Result<String> workUp(@RequestBody MdcEquipmentPunch mdcEquipmentPunch) { mdcEquipmentPunchService.workUp(mdcEquipmentPunch); return Result.OK(msg); } /** * ä¸çæå¡ * * @param mdcEquipmentPunch * @return */ @AutoLog(value = "ä¸çæå¡") @ApiOperation(value="ä¸çæå¡", notes="ä¸çæå¡") @PostMapping(value = "/workDown") public Result<String> workDown(@RequestBody MdcEquipmentPunch mdcEquipmentPunch) { mdcEquipmentPunchService.workDown(mdcEquipmentPunch); return Result.OK(msg); } } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentPunch.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,145 @@ package org.jeecg.modules.mdc.entity; import java.io.Serializable; import java.util.Date; import cn.hutool.core.date.DatePattern; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; import org.jeecg.common.aspect.annotation.Dict; import org.springframework.format.annotation.DateTimeFormat; import org.jeecgframework.poi.excel.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * @Description: mdc_equipment_punch * @Author: jeecg-boot * @Date: 2025-06-09 * @Version: V1.0 */ @Data @TableName("mdc_equipment_punch") @Accessors(chain = true) @EqualsAndHashCode(callSuper = false) @ApiModel(value = "mdc_equipment_punch对象", description = "mdc_equipment_punch") public class MdcEquipmentPunch implements Serializable { private static final long serialVersionUID = 1L; /** * id */ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "id") private String id; /** * 设å¤ç¼å· */ @Excel(name = "设å¤ç¼å·", width = 15) @ApiModelProperty(value = "设å¤ç¼å·") private String equipmentId; /** * æå¡ç¨æ· */ @Excel(name = "æå¡ç¨æ·", width = 15) @ApiModelProperty(value = "æå¡ç¨æ·") private String punchUser; /** * æå¡ç¨æ·è´¦å· */ @Excel(name = "æå¡ç¨æ·è´¦å·", width = 15) @ApiModelProperty(value = "æå¡ç¨æ·è´¦å·") @TableField(exist = false) private String punchUserRealName; /** * æå¡ç¨æ·åç§° */ @Excel(name = "æå¡ç¨æ·åç§°", width = 15) @ApiModelProperty(value = "æå¡ç¨æ·åç§°") @TableField(exist = false) private String punchUserUserName; /** * ä¸çæ¶é´ */ @Excel(name = "ä¸çæ¶é´", width = 15, format = DatePattern.NORM_DATETIME_PATTERN) @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN) @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) @ApiModelProperty(value = "ä¸çæ¶é´") private Date checkInTime; /** * ä¸çæ¶é´ */ @Excel(name = "ä¸çæ¶é´", width = 15, format = DatePattern.NORM_DATETIME_PATTERN) @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN) @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) @ApiModelProperty(value = "ä¸çæ¶é´") private Date checkOutTime; /** * è®°å½æ¥æ */ @Excel(name = "è®°å½æ¥æ", width = 15) @ApiModelProperty(value = "è®°å½æ¥æ") private String recordDate; /** * çæ¬¡ */ @Excel(name = "çæ¬¡", width = 15) @ApiModelProperty(value = "çæ¬¡") @Dict(dicCode = "shift_schedule") private Integer shiftSchedule; /** * çæ¬¡åç§° */ @Excel(name = "çæ¬¡åç§°", width = 15) @ApiModelProperty(value = "çæ¬¡åç§°") @TableField(exist = false) private String shiftScheduleName; /** * æ¯å¦ç¼ºå¡ */ @Excel(name = "æ¯å¦ç¼ºå¡", width = 15) @ApiModelProperty(value = "æ¯å¦ç¼ºå¡") private Integer isAbsent; /** * æ¯å¦è¿å° */ @Excel(name = "æ¯å¦è¿å°", width = 15) @ApiModelProperty(value = "æ¯å¦è¿å°") private Integer isLate; /** * æ¯å¦æ©é */ @Excel(name = "æ¯å¦æ©é", width = 15) @ApiModelProperty(value = "æ¯å¦æ©é") private Integer isEarly; /** * å建人 */ @ApiModelProperty(value = "å建人") private String createBy; /** * å建æ¶é´ */ @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN) @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) @ApiModelProperty(value = "å建æ¶é´") private Date createTime; /** * æ´æ°äºº */ @ApiModelProperty(value = "æ´æ°äºº") private String updateBy; /** * æ´æ°æ¶é´ */ @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN) @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN) @ApiModelProperty(value = "æ´æ°æ¶é´") private Date updateTime; } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentPunchMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ package org.jeecg.modules.mdc.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.entity.MdcEquipmentPunch; import java.util.List; /** * @Description: mdc_equipment_punch * @Author: jeecg-boot * @Date: 2025-06-09 * @Version: V1.0 */ public interface MdcEquipmentPunchMapper extends BaseMapper<MdcEquipmentPunch> { List<MdcEquipmentPunch> list(@Param("equipmentIds") List<String> equipmentIds, @Param("date") String date); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentPunchMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,42 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.mdc.mapper.MdcEquipmentPunchMapper"> <select id="list" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentPunch"> SELECT p.id, p.equipment_id, p.punch_user, p.check_in_time, p.check_out_time, p.record_date, p.is_absent, p.is_late, p.is_early, p.create_by, p.create_time, p.update_by, p.update_time, p.shift_schedule, u.realname punchUserRealName, u.username punchUserUserName, d1.item_text shiftScheduleName FROM mdc_equipment_punch p INNER JOIN sys_user u ON u.id = p.punch_user INNER JOIN (SELECT i1.item_text, i1.item_value FROM sys_dict_item i1 LEFT JOIN sys_dict i2 ON i2.id = i1.dict_id WHERE i2.dict_code = 'shift_schedule') d1 ON d1.item_value = CAST (p.shift_schedule AS nvarchar) where 1=1 AND p.equipment_id IN <foreach collection="equipmentIds" item="equipmentId" open="(" close=")" separator=","> #{equipmentId} </foreach> <if test="date != null and date != ''"> AND p.record_date = #{date} </if> order by p.equipment_id desc, p.shift_schedule asc </select> </mapper> lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentPunchService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ package org.jeecg.modules.mdc.service; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.mdc.entity.MdcEquipmentPunch; import java.util.List; /** * @Description: mdc_equipment_punch * @Author: jeecg-boot * @Date: 2025-06-09 * @Version: V1.0 */ public interface IMdcEquipmentPunchService extends IService<MdcEquipmentPunch> { List<MdcEquipmentPunch> queryList(); void workUp(MdcEquipmentPunch mdcEquipmentPunch); void workDown(MdcEquipmentPunch mdcEquipmentPunch); } lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentPunchServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,234 @@ package org.jeecg.modules.mdc.service.impl; import cn.hutool.core.date.DatePattern; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.jeecg.common.exception.JeecgBootException; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.mdc.entity.MdcEquipmentPunch; import org.jeecg.modules.mdc.mapper.MdcEquipmentPunchMapper; import org.jeecg.modules.mdc.service.IMdcEquipmentPunchService; import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.util.DateUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; /** * @Description: mdc_equipment_punch * @Author: jeecg-boot * @Date: 2025-06-09 * @Version: V1.0 */ @Service public class MdcEquipmentPunchServiceImpl extends ServiceImpl<MdcEquipmentPunchMapper, MdcEquipmentPunch> implements IMdcEquipmentPunchService { @Resource private IMdcEquipmentService mdcEquipmentService; /** * æ¥è¯¢å½åç»å½äººæè´è´£è®¾å¤æå¡æ åµ * @return */ @Override public List<MdcEquipmentPunch> queryList() { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); List<String> equipmentIds = Lists.newArrayList(); if (StringUtils.isNotBlank(user.getEquipmentIds())) { equipmentIds = Arrays.asList(user.getEquipmentIds().split(StringPool.COMMA)); }else { equipmentIds = mdcEquipmentService.getEquipmentIdsProduction(userId, null); } if (CollectionUtils.isEmpty(equipmentIds)) { return Lists.newArrayList(); } if (StringUtils.isBlank(userId)) { return Lists.newArrayList(); } //æ ¹æ®è®¾å¤ãå½åæ¥ææ¥è¯¢æå¡è®°å½ List<MdcEquipmentPunch> mdcEquipmentPunches = this.baseMapper.list(equipmentIds, DateUtils.format(new Date(), DatePattern.PURE_DATE_PATTERN)); return mdcEquipmentPunches; } /** * ä¸çæå¡ * @param mdcEquipmentPunch */ @Override public void workUp(MdcEquipmentPunch mdcEquipmentPunch) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); if (StringUtils.isBlank(mdcEquipmentPunch.getEquipmentId())) { throw new JeecgBootException("è¯·éæ©æå¡è®¾å¤ï¼"); } /** * æ ¡éªæ¯å¦å¨æææå¡èå´ä¹å * æ©çä¸ç塿æèå´ä¸ºï¼00:00:00 ~ 17:30:00 * æçä¸ç塿æèå´ä¸ºï¼00:00:00 ~ 23:00:00 */ Date startDate = DateUtils.getFormatDate( DateUtils.format(mdcEquipmentPunch.getCheckInTime(), DatePattern.NORM_DATE_PATTERN) + " 00:00:00", DatePattern.NORM_DATETIME_PATTERN ); Date endDate = DateUtils.getFormatDate( DateUtils.format(mdcEquipmentPunch.getCheckInTime(), DatePattern.NORM_DATE_PATTERN) + " 17:30:00", DatePattern.NORM_DATETIME_PATTERN ); if (mdcEquipmentPunch.getShiftSchedule() == 2) { //æçæ ææå¡æ¶é´èå´ endDate = DateUtils.getFormatDate( DateUtils.format(mdcEquipmentPunch.getCheckInTime(), DatePattern.NORM_DATE_PATTERN) + " 23:00:00", DatePattern.NORM_DATETIME_PATTERN ); } if (startDate.compareTo(mdcEquipmentPunch.getCheckInTime()) == 1 || endDate.compareTo(mdcEquipmentPunch.getCheckInTime()) == -1) { throw new JeecgBootException("æªå¨ææä¸çæå¡æ¶é´å ï¼ä¸è½æå¡ï¼"); } //æ¥è¯¢æé设å¤å½å¤©æ¯å¦å·²æä¸çå¡ List<String> equipmentIdList = Arrays.asList(mdcEquipmentPunch.getEquipmentId().split(StringPool.COMMA)); String currentDate = DateUtils.format(mdcEquipmentPunch.getCheckInTime(), DatePattern.PURE_DATE_PATTERN); //æ©çä¸çæ£å¸¸æææå¡æ¶é´ String checkInTime = DateUtils.format(mdcEquipmentPunch.getCheckInTime(), DatePattern.NORM_DATE_PATTERN) + " 08:30:00"; //æ¥è¯¢å½å设å¤ãå½åæå¡ç±»åæå¡è®°å½ List<MdcEquipmentPunch> equipmentPunchList = this.list(new LambdaQueryWrapper<MdcEquipmentPunch>() .eq(MdcEquipmentPunch::getShiftSchedule, mdcEquipmentPunch.getShiftSchedule()) .eq(MdcEquipmentPunch::getRecordDate, currentDate) .in(MdcEquipmentPunch::getEquipmentId, equipmentIdList)); List<MdcEquipmentPunch> mdcEquipmentPunchList = equipmentPunchList.stream().filter(equipmentPunch -> Objects.nonNull(equipmentPunch.getCheckInTime())).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(mdcEquipmentPunchList)) { List<String> equipmentIds = equipmentPunchList.stream() .filter(mdcEquipmentPunchInfo -> Objects.nonNull(mdcEquipmentPunchInfo.getCheckInTime())) .map(MdcEquipmentPunch::getEquipmentId) .distinct() .collect(Collectors.toList()); throw new JeecgBootException("设å¤[" + StringUtils.join(equipmentIds, StringPool.COMMA) + "]å·²æå¡ï¼æ éé夿å¡"); } List<MdcEquipmentPunch> list = Lists.newArrayList(); //ç¹æ®å¤çæçä¸çå¡ if (mdcEquipmentPunch.getShiftSchedule() == 2) { //æçæ£å¸¸ä¸ç塿ææå¡æ¶é´ checkInTime = DateUtils.format(mdcEquipmentPunch.getCheckInTime(), DatePattern.NORM_DATE_PATTERN) + " 17:00:00"; } for (String equipment : equipmentIdList) { Optional<MdcEquipmentPunch> first = equipmentPunchList.stream().filter(equipmentPunch -> Objects.isNull(equipmentPunch.getCheckInTime()) && equipment.equals(equipmentPunch.getEquipmentId())).findFirst(); MdcEquipmentPunch equipmentPunch = new MdcEquipmentPunch(); if (first.isPresent()) { equipmentPunch = first.get(); }else { equipmentPunch.setEquipmentId(equipment); equipmentPunch.setPunchUser(userId); equipmentPunch.setRecordDate(currentDate); equipmentPunch.setShiftSchedule(mdcEquipmentPunch.getShiftSchedule()); equipmentPunch.setIsAbsent(0); equipmentPunch.setIsEarly(0); } equipmentPunch.setCheckInTime(mdcEquipmentPunch.getCheckInTime()); //æå¡æ¶é´å¤§äº8ï¼30/17:00æ¶ä¸ºè¿å°æå¡ equipmentPunch.setIsLate(mdcEquipmentPunch.getCheckInTime().compareTo(DateUtils.getFormatDate(checkInTime, DatePattern.NORM_DATETIME_PATTERN)) == 1 ? 1 : 0); list.add(equipmentPunch); } this.saveOrUpdateBatch(list); } @Override public void workDown(MdcEquipmentPunch mdcEquipmentPunch) { LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); String userId = user.getId(); if (StringUtils.isBlank(mdcEquipmentPunch.getEquipmentId())) { throw new JeecgBootException("è¯·éæ©æå¡è®¾å¤ï¼"); } /** * æ ¡éªå½åä¸ç塿¯å¦å¨ææä¸çæå¡èå´ä¹å * æ©çä¸çæ ææå¡æ¶é´èå´ä¸º00:00:00 ~ 08:30:00 * æçä¸çæ ææå¡æ¶é´èå´ä¸º00:00:00 ~ 17:00:00 */ Date startDate = DateUtils.getFormatDate( DateUtils.format(mdcEquipmentPunch.getCheckOutTime(), DatePattern.NORM_DATE_PATTERN) + " 00:00:00", DatePattern.NORM_DATETIME_PATTERN ); Date endDate = DateUtils.getFormatDate( DateUtils.format(mdcEquipmentPunch.getCheckOutTime(), DatePattern.NORM_DATE_PATTERN) + " 08:30:00", DatePattern.NORM_DATETIME_PATTERN ); Date checkOutTime = DateUtils.getFormatDate( DateUtils.format(mdcEquipmentPunch.getCheckOutTime(), DatePattern.NORM_DATE_PATTERN) + " 17:30:00", DatePattern.NORM_DATETIME_PATTERN ); if (mdcEquipmentPunch.getShiftSchedule() == 2) { //æçæ ææå¡æ¶é´èå´ endDate = DateUtils.getFormatDate( DateUtils.format(mdcEquipmentPunch.getCheckOutTime(), DatePattern.NORM_DATE_PATTERN) + " 17:00:00", DatePattern.NORM_DATETIME_PATTERN ); //æçæ£å¸¸ä¸çææ©æå¡æ¶é´ checkOutTime = DateUtils.getFormatDate( DateUtils.format(mdcEquipmentPunch.getCheckOutTime(), DatePattern.NORM_DATE_PATTERN) + " 23:00:00", DatePattern.NORM_DATETIME_PATTERN ); } if (startDate.compareTo(mdcEquipmentPunch.getCheckOutTime()) == 1 || endDate.compareTo(mdcEquipmentPunch.getCheckOutTime()) == 1) { throw new JeecgBootException("æªå¨ææä¸çæå¡æ¶é´å ï¼ä¸è½æå¡ï¼"); } //æ¥è¯¢å½åæéè®¾å¤æ¯å¦åå¨ä¸çæå¡è®°å½ List<String> equipmentIdList = Arrays.asList(mdcEquipmentPunch.getEquipmentId().split(StringPool.COMMA)); String currentDate = DateUtils.format(mdcEquipmentPunch.getCheckOutTime(), DatePattern.PURE_DATE_PATTERN); List<MdcEquipmentPunch> equipmentPunchList = this.list(new LambdaQueryWrapper<MdcEquipmentPunch>() .eq(MdcEquipmentPunch::getShiftSchedule, mdcEquipmentPunch.getShiftSchedule()) .eq(MdcEquipmentPunch::getRecordDate, currentDate) .in(MdcEquipmentPunch::getEquipmentId, equipmentIdList)); List<MdcEquipmentPunch> list = Lists.newArrayList(); for (String equipmentId : equipmentIdList) { Optional<MdcEquipmentPunch> mdcEquipmentPunchOptional = equipmentPunchList.stream() .filter(mdcEquipmentPunch1 -> mdcEquipmentPunch1.getEquipmentId().equals(equipmentId)) .findFirst(); MdcEquipmentPunch equipmentPunch = new MdcEquipmentPunch(); if (mdcEquipmentPunchOptional.isPresent()) { equipmentPunch = mdcEquipmentPunchOptional.get(); }else { equipmentPunch.setIsAbsent(1); equipmentPunch.setIsLate(0); equipmentPunch.setEquipmentId(equipmentId); equipmentPunch.setShiftSchedule(mdcEquipmentPunch.getShiftSchedule()); equipmentPunch.setPunchUser(userId); equipmentPunch.setRecordDate(currentDate); } equipmentPunch.setCheckOutTime(mdcEquipmentPunch.getCheckOutTime()); //ä¸çæå¡æ¶é´æ©äº17:30/23:00å为æ©é equipmentPunch.setIsEarly(checkOutTime.compareTo(mdcEquipmentPunch.getCheckOutTime()) == 1 ? 1 : 0); list.add(equipmentPunch); } this.saveOrUpdateBatch(list); } }