diff --git a/admin-hanhai-vue/src/views/xcx/ClockInProjectList.vue b/admin-hanhai-vue/src/views/xcx/ClockInProjectList.vue index dea6b40..3aeb224 100644 --- a/admin-hanhai-vue/src/views/xcx/ClockInProjectList.vue +++ b/admin-hanhai-vue/src/views/xcx/ClockInProjectList.vue @@ -302,6 +302,11 @@ align:"center", dataIndex: 'clockEndTime' }, + { + title:'类型', + align:"center", + dataIndex: 'type_dictText' + }, { title:'排序', align:"center", diff --git a/admin-hanhai-vue/src/views/xcx/modules/ClockInProjectItemForm.vue b/admin-hanhai-vue/src/views/xcx/modules/ClockInProjectItemForm.vue index 0399283..2a92054 100644 --- a/admin-hanhai-vue/src/views/xcx/modules/ClockInProjectItemForm.vue +++ b/admin-hanhai-vue/src/views/xcx/modules/ClockInProjectItemForm.vue @@ -18,6 +18,11 @@ + + + + + @@ -118,7 +123,7 @@ that.confirmLoading = false; }) } - + }) }, } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils2.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils2.java index 3217a6e..4a72999 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils2.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils2.java @@ -748,4 +748,22 @@ public class DateUtils2 { return dateTimeFormatter.format(zonedDateTime); } + /** + * 传入时区获取当前时间 + * @param zoneId + * @return + */ + public static String getZonedDateTimeNowYYYYMMDD(String zoneId){ + ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of(zoneId)); + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(YYYYMMDD); + return dateTimeFormatter.format(zonedDateTime); + } + + public static String getZonedDateTimeNow2(String zoneId){ + ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of(zoneId)); + zonedDateTime.getDayOfWeek(); + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(HHMMSS); + return dateTimeFormatter.format(zonedDateTime); + } + } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/entity/ClockInProjectItem.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/entity/ClockInProjectItem.java index 535bda3..551a11d 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/entity/ClockInProjectItem.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/entity/ClockInProjectItem.java @@ -74,5 +74,6 @@ public class ClockInProjectItem implements Serializable { @ApiModelProperty(value = "修改时间") private java.util.Date updateTime; /**类型 0正常 1周末 2加班*/ + @Dict(dicCode = "clock_in_project_item_type") private Integer type; } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/mapper/ClockInProjectItemMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/mapper/ClockInProjectItemMapper.java index 358a73a..17c806b 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/mapper/ClockInProjectItemMapper.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockInprojectitem/mapper/ClockInProjectItemMapper.java @@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface ClockInProjectItemMapper extends BaseMapper { + /** * 获取有效打卡时间范围 * @param time diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/entity/ClockinLog.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/entity/ClockinLog.java index 12c4b17..50e79ad 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/entity/ClockinLog.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/entity/ClockinLog.java @@ -84,4 +84,6 @@ public class ClockinLog implements Serializable { @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "打卡时间") private Date clockInTime; + /**类型 0正常 1周末 2加班*/ + private Integer type; } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/mapper/ClockinLogMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/mapper/ClockinLogMapper.java index e25d5d5..2e4a605 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/mapper/ClockinLogMapper.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/mapper/ClockinLogMapper.java @@ -22,14 +22,14 @@ public interface ClockinLogMapper extends BaseMapper { * @param projectId * @return */ - @Select("SELECT a.id,a.clock_start_time,b.pic clock_in_pic,b.address clock_in_address,(SELECT id FROM clockin_log WHERE project_item_id = a.id AND clock_in_time like '%${date}%' AND user_id = #{userId}) log_id\n" + + @Select("SELECT a.id,a.clock_start_time,a.type,b.pic clock_in_pic,b.address clock_in_address,(SELECT id FROM clockin_log WHERE project_item_id = a.id AND clock_in_time like '%${date}%' AND user_id = #{userId}) log_id\n" + " ,(SELECT pic FROM clockin_log WHERE project_item_id = a.id and clock_in_time like '%${date}%' AND user_id = #{userId}) pic\n" + " ,(SELECT clock_in_time FROM clockin_log WHERE project_item_id = a.id AND clock_in_time like '%${date}%' AND user_id = #{userId}) clock_in_time\n" + " ,(SELECT address FROM clockin_log WHERE project_item_id = a.id AND clock_in_time like '%${date}%' AND user_id = #{userId}) address\n" + " ,(SELECT count(1) FROM clockin_log WHERE project_item_id = a.id AND clock_in_time like '%${date}%' AND user_id = #{userId}) clock_in_flag\n" + "FROM clock_in_project_item a left join clock_in_project b on a.project_id = b.id\n" + - "WHERE a.del_flag = 0 AND a.project_id = #{projectId} ORDER BY a.sort") - List getClockInLogResp(@Param("date") String date,@Param("projectId") String projectId,@Param("userId") String userId); + "WHERE a.del_flag = 0 AND a.type in (${type},2) AND a.project_id = #{projectId} ORDER BY a.sort,a.type") + List getClockInLogResp(@Param("date") String date,@Param("projectId") String projectId,@Param("userId") String userId,@Param("type") Integer type); /** @@ -38,7 +38,7 @@ public interface ClockinLogMapper extends BaseMapper { * @param date * @return */ - @Select("SELECT IFNULL(count(1),0) FROM clockin_log WHERE del_flag = 0 AND user_id = #{userId} AND clock_in_time like '%${date}%'") + @Select("SELECT IFNULL(count(1),0) FROM clockin_log WHERE del_flag = 0 AND user_id = #{userId} AND clock_in_time like '%${date}%' AND type in (0,1)") Integer getClockInTotal(@Param("userId") String userId,@Param("date") String date); @Select("select clock_start_time,(select clock_in_time from clockin_log where project_item_id = a.id and del_flag = 0 and user_id = '${userId}' and clock_in_time like '%${date}%') time from clock_in_project_item a where project_id = '${projectId}'\n") diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/ressp/ClockInLogResp.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/ressp/ClockInLogResp.java index 98b0957..74c083a 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/ressp/ClockInLogResp.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/ressp/ClockInLogResp.java @@ -24,6 +24,9 @@ public class ClockInLogResp { private String time; + private Integer type; + + public String getPic(){ if(this.pic == null){ this.pic = this.clockInPic; @@ -39,6 +42,15 @@ public class ClockInLogResp { return this.address; } + public Integer getClockInFlag(){ + Integer clockInFlag = this.clockInFlag; + if(this.type == 2){ + clockInFlag = 1; + + } + return clockInFlag; + } + } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/service/IClockinLogService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/service/IClockinLogService.java index 4e64437..0c557ac 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/service/IClockinLogService.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/service/IClockinLogService.java @@ -21,7 +21,7 @@ public interface IClockinLogService extends IService { * @param projectId * @return */ - List getClockInLogResp(String date, String projectId,String userId); + List getClockInLogResp(String date, String projectId,String userId,Integer type); /** diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/service/impl/ClockinLogServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/service/impl/ClockinLogServiceImpl.java index 4757494..a1ee32c 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/service/impl/ClockinLogServiceImpl.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/clockinlog/service/impl/ClockinLogServiceImpl.java @@ -20,8 +20,8 @@ import java.util.List; public class ClockinLogServiceImpl extends ServiceImpl implements IClockinLogService { @Override - public List getClockInLogResp(String date, String projectId,String userId) { - return baseMapper.getClockInLogResp(date, projectId, userId); + public List getClockInLogResp(String date, String projectId,String userId,Integer type) { + return baseMapper.getClockInLogResp(date, projectId, userId,type); } @Override diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/clockin/service/impl/ClockinServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/clockin/service/impl/ClockinServiceImpl.java index 10408b9..57b8757 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/clockin/service/impl/ClockinServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/clockin/service/impl/ClockinServiceImpl.java @@ -31,6 +31,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.time.DayOfWeek; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; @@ -59,9 +60,9 @@ public class ClockinServiceImpl implements IClockinService { @Override public Result clockIn(ClockInReq clockInReq) { HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(clockInReq.getToken()); - if(StringUtils.isBlank(clockInReq.getPic())){ - throw new JeecgBootException("请拍照打卡"); - } +// if(StringUtils.isBlank(clockInReq.getPic())){ +// throw new JeecgBootException("请拍照打卡"); +// } if(StringUtils.isBlank(clockInReq.getAddress()) || StringUtils.isBlank(clockInReq.getLon()) || StringUtils.isBlank(clockInReq.getLat())){ throw new JeecgBootException("请打开定位打卡"); } @@ -109,13 +110,14 @@ public class ClockinServiceImpl implements IClockinService { } clockinLog.setUserId(hanHaiMember.getId()); - clockinLog.setPic(clockInReq.getPic()); +// clockinLog.setPic(clockInReq.getPic()); clockinLog.setAddress(clockInReq.getAddress()); clockinLog.setLon(clockInReq.getLon()); clockinLog.setLat(clockInReq.getLat()); clockinLog.setProjectId(clockInProject.getId()); clockinLog.setProjectItemId(validClockInTime.getId()); clockinLog.setTeamId(clockinTeamLog.getTeamId()); + clockinLog.setType(validClockInTime.getType()); ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of(clockInTimeZone.getTimeZone())); LocalDateTime localDateTime = zonedDateTime.toLocalDateTime(); Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); @@ -127,13 +129,7 @@ public class ClockinServiceImpl implements IClockinService { @Override public Result clockInLog(ClockInLogReq clockInLogReq) { HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(clockInLogReq.getToken()); - if(StringUtils.isBlank(clockInLogReq.getDate())){ - clockInLogReq.setDate(DateUtils2.getTodayDate()); - }else{ - Date date = DateUtils2.getDate(clockInLogReq.getDate()); - String dateString = DateUtils2.getDateString(date, "yyyy-MM-dd"); - clockInLogReq.setDate(dateString); - } + ClockinTeamLog clockinTeamLog = clockinTeamLogService.lambdaQuery() .eq(ClockinTeamLog::getDelFlag, 0) .eq(ClockinTeamLog::getUserId, hanHaiMember.getId()) @@ -142,12 +138,33 @@ public class ClockinServiceImpl implements IClockinService { .eq(ClockInProject::getDelFlag, 0) .eq(ClockInProject::getTeamId, clockinTeamLog.getTeamId()) .one(); + ClockInTimeZone clockInTimeZone = clockInTimeZoneService.lambdaQuery() + .eq(ClockInTimeZone::getId, clockInProject.getTimeZone()) + .one(); + + if(StringUtils.isBlank(clockInLogReq.getDate())){ + clockInLogReq.setDate(DateUtils2.getZonedDateTimeNowYYYYMMDD(clockInTimeZone.getTimeZone())); + }else{ + Date date = DateUtils2.getDate(clockInLogReq.getDate()); + String dateString = DateUtils2.getDateString(date, "yyyy-MM-dd"); + clockInLogReq.setDate(dateString); + } + + Date date = DateUtils2.getDate(clockInLogReq.getDate() + " 23:59:59"); + LocalDateTime localDateTime = DateUtils2.dateToDateTime(date); + Integer type = 0; + if(DayOfWeek.SATURDAY.equals(localDateTime.getDayOfWeek()) || DayOfWeek.SUNDAY.equals(localDateTime.getDayOfWeek())){ + type = 1; + } + + + // List clockinLogList = clockinLogService.lambdaQuery() // .eq(ClockinLog::getDelFlag, 0) // .eq(ClockinLog::getUserId, hanHaiMember.getId()) // .like(ClockinLog::getCreateTime, clockInLogReq.getDate()) // .list(); - List clockInLogResp = clockinLogService.getClockInLogResp(clockInLogReq.getDate(), clockInProject.getId(), hanHaiMember.getId()); + List clockInLogResp = clockinLogService.getClockInLogResp(clockInLogReq.getDate(), clockInProject.getId(), hanHaiMember.getId(),type); return Result.OK(clockInLogResp); } @@ -164,11 +181,7 @@ public class ClockinServiceImpl implements IClockinService { .eq(ClockInProject::getTeamId, clockinTeamLog.getTeamId()) .one(); - List clockInProjectItemList = clockInProjectItemService.lambdaQuery() - .eq(ClockInProjectItem::getDelFlag, 0) - .eq(ClockInProjectItem::getType,0) - .eq(ClockInProjectItem::getProjectId, clockInProject.getId()) - .list(); + Date date = new Date(); if(StringUtils.isNotBlank(clockInTotalReq.getDate())){ date = DateUtils2.getDate(clockInTotalReq.getDate()); @@ -197,6 +210,18 @@ public class ClockinServiceImpl implements IClockinService { if(milliSecond>todayDate){ break; } + + Date date2 = DateUtils2.getDate(yyyymmdd + " 23:59:59"); + LocalDateTime localDateTime = DateUtils2.dateToDateTime(date2); + Integer type = 0; + if(DayOfWeek.SATURDAY.equals(localDateTime.getDayOfWeek()) || DayOfWeek.SUNDAY.equals(localDateTime.getDayOfWeek())){ + type = 1; + } + List clockInProjectItemList = clockInProjectItemService.lambdaQuery() + .eq(ClockInProjectItem::getDelFlag, 0) + .eq(ClockInProjectItem::getType,type) + .eq(ClockInProjectItem::getProjectId, clockInProject.getId()) + .list(); Integer clockInTotal = clockinLogService.getClockInTotal(hanHaiMember.getId(), yyyymmdd); clockInTotalResp.setDate(yyyymmdd); diff --git a/jeecg-boot-module-system/src/test/java/org/jeecg/Test.java b/jeecg-boot-module-system/src/test/java/org/jeecg/Test.java index 6a51b51..15a754e 100644 --- a/jeecg-boot-module-system/src/test/java/org/jeecg/Test.java +++ b/jeecg-boot-module-system/src/test/java/org/jeecg/Test.java @@ -19,10 +19,12 @@ public class Test { @org.junit.Test public void test(){ + ZonedDateTime utc = ZonedDateTime.now(ZoneId.of("UTC+7")); LocalDateTime localDateTime = utc.toLocalDateTime(); Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); - System.out.println(date); + + System.out.println(utc.getDayOfWeek()); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); System.out.println(dateTimeFormatter.format(utc));