From 8e2008a8722b9b5a5d7107542fcacd9bf6eea735 Mon Sep 17 00:00:00 2001 From: zm <2369059705qq.com> Date: 星期三, 14 八月 2024 09:47:40 +0800 Subject: [PATCH] 考勤打卡 --- src/main/java/com/product/mobile/core/config/MobileCoreConst.java | 3 src/main/java/com/product/mobile/core/config/MobileCoreCode.java | 1 src/main/java/com/product/mobile/core/controller/SignInController.java | 2 src/main/java/com/product/mobile/core/service/SignInService.java | 136 +++++++++++++++++++++++++++++++++++++++------ 4 files changed, 121 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/product/mobile/core/config/MobileCoreCode.java b/src/main/java/com/product/mobile/core/config/MobileCoreCode.java index eb6339c..668965a 100644 --- a/src/main/java/com/product/mobile/core/config/MobileCoreCode.java +++ b/src/main/java/com/product/mobile/core/config/MobileCoreCode.java @@ -1,5 +1,6 @@ package com.product.mobile.core.config; + import com.product.common.enums.IEnum; import com.product.common.enums.ModuleEnum; diff --git a/src/main/java/com/product/mobile/core/config/MobileCoreConst.java b/src/main/java/com/product/mobile/core/config/MobileCoreConst.java index 2bcb6d0..0b6b652 100644 --- a/src/main/java/com/product/mobile/core/config/MobileCoreConst.java +++ b/src/main/java/com/product/mobile/core/config/MobileCoreConst.java @@ -27,7 +27,8 @@ //鎵撳崱 public static final String TABLE_PUNCH_RECORD = "product_oa_punch_record"; public static final String TABLE_PUNCH_SITE = "product_oa_punch_site"; - + public static final String TABLE_PUNCH_TIME = "product_oa_punch_time"; + //鎵撳崱:鎵嬫満鎵撳崱 public static final String FIELD_PUNCH_TYPE = "punch_type"; //瀛楁瀹氫箟 diff --git a/src/main/java/com/product/mobile/core/controller/SignInController.java b/src/main/java/com/product/mobile/core/controller/SignInController.java index c86aee4..82bf88b 100644 --- a/src/main/java/com/product/mobile/core/controller/SignInController.java +++ b/src/main/java/com/product/mobile/core/controller/SignInController.java @@ -60,7 +60,7 @@ RequestParameterEntity reqp = (RequestParameterEntity) bean; fse = reqp.getFormData(); } - return this.OK_List(signInService.signInList(fse)); + return this.OK_List(signInService.signInList()); } /** * 鑾峰彇鍏徃鍥哄畾鑰冨嫟鐐圭殑淇℃伅 diff --git a/src/main/java/com/product/mobile/core/service/SignInService.java b/src/main/java/com/product/mobile/core/service/SignInService.java index 95026ea..f410bc1 100644 --- a/src/main/java/com/product/mobile/core/service/SignInService.java +++ b/src/main/java/com/product/mobile/core/service/SignInService.java @@ -3,6 +3,7 @@ import java.text.SimpleDateFormat; import java.util.Date; +import com.product.core.transfer.Transactional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -30,26 +31,127 @@ public BaseDao baseDao; /** * 鍏堟煡鍑哄巻鍙叉墦鍗¤褰� - * @param cpage - * @param pagesize * @return * @throws BaseException */ + @Transactional public boolean signIn(FieldSetEntity fse) throws BaseException{ - fse.setTableName(MobileCoreConst.TABLE_PUNCH_RECORD); SystemUser user=SpringMVCContextHolder.getCurrentUser(); Date d = new Date(); - DataTableEntity dt=signInList(fse); - if(user!=null) { - fse.setValue(MobileCoreConst.ORG_LEVEL_UUID, user.getOrg_level_uuid()); - fse.setValue(MobileCoreConst.DEPT_UUID, user.getDept_uuid()); - fse.setValue(MobileCoreConst.CREATED_UTC_DATETIME, d); - } - fse.setValue(MobileCoreConst.FIELD_PUNCH_TYPE,1);//鎵嬫満鎵撳崱 + //鑾峰彇褰撳墠鏃堕棿鎵撳崱璁板綍 + FieldSetEntity fs_record=signInList(); + //鑾峰彇鎵撳崱璁剧疆 + FieldSetEntity fs_time = baseDao.getFieldSetByFilter(MobileCoreConst.TABLE_PUNCH_TIME, "punch_site_uuid=?", new Object[]{fse.getString("punch_congfig_uuid")}, false); + if (!StringUtils.isEmpty(fs_time.getString("morning_work_off"))&&!StringUtils.isEmpty(fs_time.getString("afternoon_work"))){ + //鍥涙鎵撳崱淇濆瓨瑙勫垯 + if (FieldSetEntity.isEmpty(fs_record)){ + //鏈煡璇㈠埌鎵撳紑璁板綍鏂板缓鎵撳崱璁板綍 + if(user!=null) { + fse.setValue(MobileCoreConst.ORG_LEVEL_UUID, user.getOrg_level_uuid()); + fse.setValue(MobileCoreConst.DEPT_UUID, user.getDept_uuid()); + fse.setValue(MobileCoreConst.CREATED_BY, user.getUser_id()); + fse.setValue(MobileCoreConst.CREATED_UTC_DATETIME, d); + } + fse.setValue(MobileCoreConst.FIELD_PUNCH_TYPE,1);//鎵嬫満鎵撳崱 + if (!StringUtils.isEmpty(fse.getDate("punch_time_one"))){ + if (dataCompareTo(fse.getDate("punch_time_one"),fs_time.getDate("morning_work_off"))){ + fse.setValue("punch_time_one",fse.getDate("punch_time_one")); + fse.setValue("punch_range_one",fse.getString("punch_range_one")); + }else { + fse.setValue("punch_time_three",fse.getDate("punch_time_one")); + fse.setValue("punch_range_three",fse.getString("punch_range_one")); + fse.setValue("punch_time_one",null); + fse.setValue("punch_range_one",null); + } + } + if (!StringUtils.isEmpty(fse.getDate("punch_time_four"))){ + if (dataCompareTo(fse.getDate("punch_time_four"),fs_time.getDate("afternoon_work_off"))){ + fse.setValue("punch_time_two",fse.getDate("punch_time_four")); + fse.setValue("punch_range_two",fse.getString("punch_range_four")); + }else { + fse.setValue("punch_time_two",null); + fse.setValue("punch_range_two",null); + fse.setValue("punch_time_four",fse.getDate("punch_time_four")); + fse.setValue("punch_range_four",fse.getString("punch_range_four")); + } + } + fse.setTableName(MobileCoreConst.TABLE_PUNCH_RECORD); + return baseDao.saveFieldSetEntity(fse); + } + else { + //鏌ヨ鍒板凡鏈夋墦寮�璁板綍鏂板缓鎵撳崱璁板綍 + if (!StringUtils.isEmpty(fse.getDate("punch_time_one"))){ + //鍒ゆ柇涓婄彮鎵撳崱鎵撳崱瑙勫垯锛�1銆佷笂鍗堜笂鐝湭鎵撳崱 2銆佹湭瓒呰繃涓婂崍涓嬬彮鏃堕棿 3銆佷笂鍗堟湭鎵撲笅鐝崱 鍒欎负涓婂崍涓婄彮鍗″惁鍒欎负涓嬪崍涓婄彮鍗� + if(dataCompareTo(fse.getDate("punch_time_one"),fs_time.getDate("morning_work_off")) + &&StringUtils.isEmpty(fs_record.getString("punch_time_one")) + &&StringUtils.isEmpty(fs_record.getString("punch_time_two"))){ + fs_record.setValue("punch_time_one", fse.getDate("punch_time_one")); + fs_record.setValue("punch_range_one", fse.getString("punch_range_one")); + }else { + fs_record.setValue("punch_time_three", fse.getDate("punch_time_one")); + fs_record.setValue("punch_range_three", fse.getString("punch_range_one")); + } + } + //鍒ゆ柇涓嬬彮鎵撳崱鐝墦鍗¤鍒欙細1銆佷笂鍗堜笅鐝湭鎵撳崱 2銆佹湭瓒呰繃涓婂崍涓嬬彮鏃堕棿 3銆佷笅鍗堝崍鏈墦涓婄彮鍗� 鍒欎负涓婂崍涓嬬彮鍗″惁鍒欎负涓嬪崍涓嬬彮鍗� + if (!StringUtils.isEmpty(fse.getDate("punch_time_four"))){ + if(dataCompareTo(fse.getDate("punch_time_four"),fs_time.getDate("afternoon_work_off")) + &&StringUtils.isEmpty(fs_record.getDate("punch_time_two")) + &&StringUtils.isEmpty(fs_record.getDate("punch_time_three"))){ + fs_record.setValue("punch_time_two", fse.getDate("punch_time_four")); + fs_record.setValue("punch_range_two", fse.getString("punch_range_four")); + }else { + fs_record.setValue("punch_time_four", fse.getDate("punch_time_four")); + fs_record.setValue("punch_range_four", fse.getString("punch_range_four")); + } + } + return baseDao.saveFieldSetEntity(fs_record); + } + }else { + //涓ゆ鎵撳崱淇濆瓨瑙勫垯 + if (FieldSetEntity.isEmpty(fs_record)){ + //鏈煡璇㈠埌鎵撳紑璁板綍鏂板缓鎵撳崱璁板綍 + if(user!=null) { + fse.setValue(MobileCoreConst.ORG_LEVEL_UUID, user.getOrg_level_uuid()); + fse.setValue(MobileCoreConst.DEPT_UUID, user.getDept_uuid()); + fse.setValue(MobileCoreConst.CREATED_UTC_DATETIME, d); + fse.setValue(MobileCoreConst.CREATED_BY, user.getUser_id()); + } + fse.setValue(MobileCoreConst.FIELD_PUNCH_TYPE,1);//鎵嬫満鎵撳崱 + fse.setTableName(MobileCoreConst.TABLE_PUNCH_RECORD); + return baseDao.saveFieldSetEntity(fse); + }else { + //鏌ヨ鍒板凡鏈夋墦寮�璁板綍鏂板缓鎵撳崱璁板綍 + if (!StringUtils.isEmpty(fse.getString("punch_time_one"))){ + fs_record.setValue("punch_time_one",fse.getDate("punch_time_one")); + fs_record.setValue("punch_range_one",fse.getString("punch_range_one")); - return baseDao.saveFieldSetEntity(fse); - } + } + if (!StringUtils.isEmpty(fse.getString("punch_time_four"))){ + fs_record.setValue("punch_time_four",fse.getDate("punch_time_four")); + fs_record.setValue("punch_range_four",fse.getString("punch_range_four")); + } + + return baseDao.saveFieldSetEntity(fs_record); + } + + } + } + + /** + * 灏嗕袱涓椂闂村緱鏃跺垎绉掕繘琛屽姣攖rue鍒欎负鍓嶈�呮棭 鍚﹀垯灏辨槸涓�鏍锋椂闂存垨鑰呭悗鑰呮棭 + * @param a + * @param b + * @return + */ + private boolean dataCompareTo(Date a,Date b){ + a.setTime(a.getTime() % (24 * 60 * 60 * 1000)); // 璁剧疆date2涓哄綋澶╃殑00:00:00 + b.setTime(b.getTime() % (24 * 60 * 60 * 1000)); // 璁剧疆date2涓哄綋澶╃殑00:00:00 + if (a.compareTo(b) < 0) { + return true; + } + return false; + } /** * 鏌ュ嚭鎸囧畾鏃ユ湡鎵撳崱璁板綍 * @param cpage @@ -57,16 +159,12 @@ * @return * @throws BaseException */ - public DataTableEntity signInList(FieldSetEntity fse) throws BaseException{ + public FieldSetEntity signInList() throws BaseException{ SystemUser user=SpringMVCContextHolder.getCurrentUser(); Date d = new Date(); String str = sdf.format(d); //灏嗘棩鏈熻浆鎹负瀛楃涓蹭笖鏍煎紡鎸夌収涔嬪墠鍒跺畾鐨� - StringBuilder sql=new StringBuilder(); - sql.append("select * from ").append(MobileCoreConst.TABLE_PUNCH_RECORD) - .append(" where created_by=? and DATE_FORMAT(created_utc_datetime,'%Y-%m-%d')=? "); - - DataTableEntity dt=baseDao.listTable(sql.toString(), new Object[] {user.getUser_id(),str}); - return dt; + FieldSetEntity fs = baseDao.getFieldSetByFilter(MobileCoreConst.TABLE_PUNCH_RECORD, "created_by=? and DATE_FORMAT(created_utc_datetime,'%Y-%m-%d')=?", new Object[]{user.getUser_id(), str}, false); + return fs; } /** * 鏌ヨ鍏徃瀹氫箟鐨勮�冨嫟鐐� -- Gitblit v1.9.2