From 2e7d01f7aa6569b063b410863a43610fe2c56170 Mon Sep 17 00:00:00 2001
From: lal <lalqqhy@163.com>
Date: Fri, 10 Jul 2020 09:09:45 +0800
Subject: [PATCH] 提交

---
 src/main/java/cn/timer/api/controller/kqgl/ClockInController.java | 284 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------
 1 file changed, 160 insertions(+), 124 deletions(-)

diff --git a/src/main/java/cn/timer/api/controller/kqgl/ClockInController.java b/src/main/java/cn/timer/api/controller/kqgl/ClockInController.java
index cae7e71..8cfa9f2 100644
--- a/src/main/java/cn/timer/api/controller/kqgl/ClockInController.java
+++ b/src/main/java/cn/timer/api/controller/kqgl/ClockInController.java
@@ -2148,75 +2148,108 @@ public class ClockInController {
 			 //打卡记录
 //		     List<KqglAssoDkjl> dajllist = kqglassodkjlmapper.getDetailedRecordClock(startDate,endDate,userBean.getEmpNum());
 //		     attdate.setAttpr(dajllist);
-			 List<AttSchedule> attsch = attdate.getAttsch();
-			 int r = 1;
-			 for(AttSchedule ash : attsch) {
-				 
-				 if(attdate.getAttsch().size() == 2) {
-					 //有范围
-					 if(ash.getStarttime() != 0 && ash.getEndtime() != 0) {
-						 boolean ectivedate = ClockInTool.hourMinuteBetween(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(nowdate), new SimpleDateFormat("yyyy-MM-dd HH:mm").format(ash.getStarttime()), new SimpleDateFormat("yyyy-MM-dd HH:mm").format(ash.getEndtime()),"yyyy-MM-dd HH:mm");
-						 if(ectivedate) {
-							 ash.setIsdk(0);
+			 if(attdate.getAttgrouptype() != 3) {
+				 List<AttSchedule> attsch = attdate.getAttsch();
+				 if(EmptyUtil.isNotEmpty(attdate.getAttsch())) {//班次不为空
+					 int bccs = attdate.getAttsch().size();
+					 int r = 1,bc = 0;
+					 int bsz = 0;
+					 for(AttSchedule ash : attsch) {
+						 if(attdate.getAttsch().size() == 2) {
+							 //有范围
+							 if(ash.getStarttime() != 0 && ash.getEndtime() != 0) {
+								 boolean ectivedate = ClockInTool.hourMinuteBetween(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(nowdate), new SimpleDateFormat("yyyy-MM-dd HH:mm").format(ash.getStarttime()), new SimpleDateFormat("yyyy-MM-dd HH:mm").format(ash.getEndtime()),"yyyy-MM-dd HH:mm");
+								 if(ectivedate) {
+									 bsz = 1;
+									 ash.setIsdk(0);
+								 }else {
+									 bc++;
+									 ash.setIsdk(1);
+								 }
+							 }else {
+								 KqglAssoBcsz shif = KqglAssoBcsz.builder().build().selectOne(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getId, ash.getId()));
+								 Timestamp b = Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));//
+								 
+								 String xbdk1 = (str+" "+shif.getXbdk1()+":00").replaceAll("\r|\n", "");
+								 Timestamp a = Timestamp.valueOf(xbdk1);
+								 String sbdk1 = (str+" "+shif.getSbdk1()+":00").replaceAll("\r|\n", "");
+						         Timestamp c = Timestamp.valueOf(sbdk1);
+								 
+								 if(r == 1) {
+							         if (b.after(a) && b.after(c)) {//  当前时间大于下班打卡时间
+							        	 bc++;
+							        	 ash.setIsdk(1);
+							         }else {
+							        	 bsz = 1;
+							         }
+								 }
+								 if(r == 2) {
+									 
+									 String stampToDate = ClockInTool.stampToDate(String.valueOf(endDate));
+									 Timestamp d = Timestamp.valueOf(stampToDate);
+									 
+//									 if (b.after(a) && b.after(c)) {
+//										 ash.setIsdk(1);
+//									 }
+									 if(b.after(a) && b.before(d)) {
+										 bsz = 1;
+										 ash.setIsdk(0);
+									 }
+							         if(b.before(a) || b.after(c)) {
+							        	 bc++;
+							        	 ash.setIsdk(1);
+							         }
+								 }
+								 r++;
+							 }
 						 }else {
-							 ash.setIsdk(1);
-						 }
-					 }else {
-						 KqglAssoBcsz shif = KqglAssoBcsz.builder().build().selectOne(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getId, ash.getId()));
-						 Timestamp b = Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));//
-						 
-						 String xbdk1 = (str+" "+shif.getXbdk1()+":00").replaceAll("\r|\n", "");
-						 Timestamp a = Timestamp.valueOf(xbdk1);
-						 String sbdk1 = (str+" "+shif.getSbdk1()+":00").replaceAll("\r|\n", "");
-				         Timestamp c = Timestamp.valueOf(sbdk1);
-						 
-						 if(r == 1) {
-					         if (b.after(a)) {//  当前时间大于下班打卡时间
-					        	 ash.setIsdk(1);
-					         }
-						 }
-						 if(r == 2) {
-							 
-							 String stampToDate = ClockInTool.stampToDate(String.valueOf(endDate));
-							 Timestamp d = Timestamp.valueOf(stampToDate);
-							 
-							 if (b.after(a) && b.after(c)) {
+							 boolean ectivedate = ClockInTool.hourMinuteBetween(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(nowdate), new SimpleDateFormat("yyyy-MM-dd HH:mm").format(ash.getStarttime()), new SimpleDateFormat("yyyy-MM-dd HH:mm").format(ash.getEndtime()),"yyyy-MM-dd HH:mm");
+							 if(ectivedate) {
+								 bsz = 1;
+								 ash.setIsdk(0);
+							 }else {
+								 bc++;
 								 ash.setIsdk(1);
 							 }
-							 if(b.after(a) && b.before(d)) {
-								 ash.setIsdk(0);
+						 }
+						 
+						 List<KqglAssoDkjl> dajllist_ = kqglassodkjlmapper.getDetailedRecordClock(startDate,endDate,userBean.getEmpNum());
+						 KqglAssoDkjl dkjl = KqglAssoDkjl.builder().build();
+						 for(KqglAssoDkjl daj : dajllist_) {
+							 if(ash.getId() == daj.getBcid() && ash.getSort() == daj.getSort()) {//班次id和打卡顺序对应
+								 BeanUtil.copyProperties(daj, dkjl,"attdate","bcid","remarks","userId","attime","dkmxid","commentary","punchequipment","punchmode");
+								 if(bsz == 1) {
+									 bc++;
+									 ash.setIsdk(1);
+								 }else {
+									 ash.setIsdk(1);
+								 }
 							 }
-					         
 						 }
-						 r++;
+						 ash.setDajl(dkjl);
 					 }
-				 }else {
-					 boolean ectivedate = ClockInTool.hourMinuteBetween(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(nowdate), new SimpleDateFormat("yyyy-MM-dd HH:mm").format(ash.getStarttime()), new SimpleDateFormat("yyyy-MM-dd HH:mm").format(ash.getEndtime()),"yyyy-MM-dd HH:mm");
-					 if(ectivedate) {
-						 ash.setIsdk(0);
-					 }else {
-						 ash.setIsdk(1);
-					 }
-				 }
-				 //自由工时
-				 if(attdate.getAttgrouptype() == 3) {
 					 
-					 
-					 
-				 }else {
-					 List<KqglAssoDkjl> dajllist_ = kqglassodkjlmapper.getDetailedRecordClock(startDate,endDate,userBean.getEmpNum());
-					 KqglAssoDkjl dkjl = KqglAssoDkjl.builder().build();
-					 for(KqglAssoDkjl daj : dajllist_) {
-						 if(ash.getId() == daj.getBcid() && ash.getSort() == daj.getSort()) {//班次id和打卡顺序对应
-							 BeanUtil.copyProperties(daj, dkjl,"attdate","bcid","remarks","userId","attime","dkmxid","commentary","punchequipment","punchmode");
-							 ash.setIsdk(1);
+					 //全部为 1 时
+					 if(bccs == bc) {
+						 KqglAssoDkjl dk = KqglAssoDkjl.builder().build().selectOne(new QueryWrapper<KqglAssoDkjl>().lambda().eq(KqglAssoDkjl::getQyid, userBean.getOrgCode())
+								 .eq(KqglAssoDkjl::getUserId, userBean.getEmpNum()).ge(KqglAssoDkjl::getDktime, startDate).le(KqglAssoDkjl::getDktime, endDate).orderByDesc(KqglAssoDkjl::getSort).last("LIMIT 1"));
+						 if(dk != null && attdate.getAttsch().size() != dk.getSort()) {
+							 AttSchedule att = attsch.get(dk.getSort());
+							 att.setIsdk(0);
 						 }
 					 }
-					 ash.setDajl(dkjl);
 				 }
+			 }else {
+				 //自由工时
+				 List<AttSchedule> attsch = new ArrayList<AttSchedule>();
+				 
+				 List<KqglAssoDkjl> dajllist_ = kqglassodkjlmapper.getDetailedRecordClock(startDate,endDate,userBean.getEmpNum());
+				 KqglAssoDkjl dkjl = KqglAssoDkjl.builder().build();
+				 
+				 
+				 
 			 }
 			 
-			 
 			   //外勤   true:开   false:关
 			    if(attgro.getIsWq() == 1) {
 			    	attdate.setFieldpersonnel(true);
@@ -2280,80 +2313,83 @@ public class ClockInController {
 		     double latetime_ = 0;//前天晚走时长(分钟)
 		     Long changed_time = 0l;//晚到后应打卡时间
 		     
-		     List<AttSchedule> ash = attdate.getAttsch();
-		     KqglAssoBcsz shif = KqglAssoBcsz.builder().build().selectOne(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getId, ash.get(0).getId()));
-			 
-		     if(shif != null) {
-				int dkcs_ = shif.getSxbcs();//上下班打卡次数
-				int iswzwd = shif.getIsWzwd();//是否开启晚走晚到(0:否;1:是)
-				
-				//统一分钟数
-				double xbwz1 = 0,xbwz2=0,xbwz3=0;
-				int sbwd1=0,sbwd2=0,sbwd3=0;
-				
-				int arrive_late = 0;//晚到时间
-				String clock_date = "";//应打卡时间
-				Long latetime = 0l;//前天晚走时长(分钟)
-				
-				KqglAssoDkmx yesterdaymx = KqglAssoDkmx.builder().build();
-				AttendanceCardListDto attdateyesterday;
-				long yesendtime1=0,yesendtime2=0,yesendtime3=0;
-				//存在晚走玩到
-				 if(iswzwd > 0) {
+		     if(attdate.getAttgrouptype() != 3) {
+		    	 List<AttSchedule> ash = attdate.getAttsch();
+			     KqglAssoBcsz shif = KqglAssoBcsz.builder().build().selectOne(new QueryWrapper<KqglAssoBcsz>().lambda().eq(KqglAssoBcsz::getId, ash.get(0).getId()));
+				 
+			     if(shif != null) {
+					int dkcs_ = shif.getSxbcs();//上下班打卡次数
+					int iswzwd = shif.getIsWzwd();//是否开启晚走晚到(0:否;1:是)
+					
 					//统一分钟数
-					xbwz1 = Double.valueOf(shif.getXbwz1()) * 60;//下班晚走1
-					sbwd1 = Integer.valueOf(String.valueOf(Double.valueOf(shif.getSbwd1()) * 60));//上班晚到1
-					xbwz2 = Double.valueOf(shif.getXbwz2()) * 60;//下班晚走2
-					sbwd2 = Integer.valueOf(String.valueOf(Double.valueOf(shif.getSbwd2()) * 60));//上班晚到2
-					xbwz3 = Double.valueOf(shif.getXbwz3()) * 60;//下班晚走3
-					sbwd3 = Integer.valueOf(String.valueOf(Double.valueOf(shif.getSbwd3()) * 60));//上班晚到3
-					 
-					 //获取前一天最后下班的时间
-					 yesterdaymx = KqglAssoDkmx.builder().build().selectOne(new QueryWrapper<KqglAssoDkmx>().lambda().eq(KqglAssoDkmx::getUserid, userBean.getEmpNum())
-								.ge(KqglAssoDkmx::getDksj, startDateyesterday).le(KqglAssoDkmx::getDksj, endDateyesterday));
-					 attdateyesterday = MethodCall(userBean.getOrgCode(),userBean.getEmpNum(),yesterday);
-					 
-					 List<AttSchedule> ashyes = attdateyesterday.getAttsch();
-					 if(attdateyesterday.getAttsch().size() == 2 || attdateyesterday.getAttsch().size() == 4 || attdateyesterday.getAttsch().size() == 6) {
-						 yesendtime1 = ashyes.get(1).getTime();
-					 }
-				 	 if(attdateyesterday.getAttsch().size() == 4 || attdateyesterday.getAttsch().size() == 6) {
-				 		yesendtime2 = ashyes.get(3).getTime();
-					 }
-				 	 if(attdateyesterday.getAttsch().size() == 6) {
-				 		yesendtime3 = ashyes.get(5).getTime();
-					  }
-			
-					 if(dkcs_ == 1) {
-						 if(yesterdaymx.getXbdk1() != null && yesterdaymx.getXbdk1jg() == 0) {
-							 latetime = (yesterdaymx.getXbdk1() - yesendtime1)/1000/60;
+					double xbwz1 = 0,xbwz2=0,xbwz3=0;
+					int sbwd1=0,sbwd2=0,sbwd3=0;
+					
+					int arrive_late = 0;//晚到时间
+					String clock_date = "";//应打卡时间
+					Long latetime = 0l;//前天晚走时长(分钟)
+					
+					KqglAssoDkmx yesterdaymx = KqglAssoDkmx.builder().build();
+					AttendanceCardListDto attdateyesterday;
+					long yesendtime1=0,yesendtime2=0,yesendtime3=0;
+					//存在晚走玩到
+					 if(iswzwd > 0) {
+						//统一分钟数
+						xbwz1 = Double.valueOf(shif.getXbwz1()) * 60;//下班晚走1
+						sbwd1 = Integer.valueOf(String.valueOf(Double.valueOf(shif.getSbwd1()) * 60));//上班晚到1
+						xbwz2 = Double.valueOf(shif.getXbwz2()) * 60;//下班晚走2
+						sbwd2 = Integer.valueOf(String.valueOf(Double.valueOf(shif.getSbwd2()) * 60));//上班晚到2
+						xbwz3 = Double.valueOf(shif.getXbwz3()) * 60;//下班晚走3
+						sbwd3 = Integer.valueOf(String.valueOf(Double.valueOf(shif.getSbwd3()) * 60));//上班晚到3
+						 
+						 //获取前一天最后下班的时间
+						 yesterdaymx = KqglAssoDkmx.builder().build().selectOne(new QueryWrapper<KqglAssoDkmx>().lambda().eq(KqglAssoDkmx::getUserid, userBean.getEmpNum())
+									.ge(KqglAssoDkmx::getDksj, startDateyesterday).le(KqglAssoDkmx::getDksj, endDateyesterday));
+						 attdateyesterday = MethodCall(userBean.getOrgCode(),userBean.getEmpNum(),yesterday);
+						 
+						 List<AttSchedule> ashyes = attdateyesterday.getAttsch();
+						 if(attdateyesterday.getAttsch().size() == 2 || attdateyesterday.getAttsch().size() == 4 || attdateyesterday.getAttsch().size() == 6) {
+							 yesendtime1 = ashyes.get(1).getTime();
 						 }
-					 }else if(dkcs_ == 2){
-						 if(yesterdaymx.getXbdk2() != null && yesterdaymx.getXbdk2jg() == 0) {
-							 latetime = (yesterdaymx.getXbdk2() - yesendtime2)/1000/60;
+					 	 if(attdateyesterday.getAttsch().size() == 4 || attdateyesterday.getAttsch().size() == 6) {
+					 		yesendtime2 = ashyes.get(3).getTime();
 						 }
-					 }else {
-						 if(yesterdaymx.getXbdk3() != null && yesterdaymx.getXbdk3jg() == 0) {
-							 latetime = (yesterdaymx.getXbdk3() - yesendtime3)/1000/60;
+					 	 if(attdateyesterday.getAttsch().size() == 6) {
+					 		yesendtime3 = ashyes.get(5).getTime();
+						  }
+				
+						 if(dkcs_ == 1) {
+							 if(yesterdaymx.getXbdk1() != null && yesterdaymx.getXbdk1jg() == 0) {
+								 latetime = (yesterdaymx.getXbdk1() - yesendtime1)/1000/60;
+							 }
+						 }else if(dkcs_ == 2){
+							 if(yesterdaymx.getXbdk2() != null && yesterdaymx.getXbdk2jg() == 0) {
+								 latetime = (yesterdaymx.getXbdk2() - yesendtime2)/1000/60;
+							 }
+						 }else {
+							 if(yesterdaymx.getXbdk3() != null && yesterdaymx.getXbdk3jg() == 0) {
+								 latetime = (yesterdaymx.getXbdk3() - yesendtime3)/1000/60;
+							 }
 						 }
-					 }
-					 if(latetime != 0) {
-						 latetime_ = Double.valueOf(String.valueOf(latetime));//前天晚走时长(分钟)
-						 if(latetime_ > xbwz1 && latetime_ < xbwz2) {
-							 arrive_late = sbwd1;
-						 }else if(latetime_ > xbwz2 && latetime_ < xbwz3) {
-							 arrive_late = sbwd2;
-						 }else if(latetime_ > xbwz3) {
-							 arrive_late = sbwd3;
+						 if(latetime != 0) {
+							 latetime_ = Double.valueOf(String.valueOf(latetime));//前天晚走时长(分钟)
+							 if(latetime_ > xbwz1 && latetime_ < xbwz2) {
+								 arrive_late = sbwd1;
+							 }else if(latetime_ > xbwz2 && latetime_ < xbwz3) {
+								 arrive_late = sbwd2;
+							 }else if(latetime_ > xbwz3) {
+								 arrive_late = sbwd3;
+							 }
+							 //ash.get(0).getTime():当天第一次应打卡时间
+							 clock_date = ClockInTool.stampToDate(String.valueOf(ash.get(0).getTime()));
+							 changed_time = Long.valueOf(ClockInTool.dateToStamp(ClockInTool.addtime(clock_date, "+"+arrive_late)));//晚到后应打卡时间
 						 }
-						 //ash.get(0).getTime():当天第一次应打卡时间
-						 clock_date = ClockInTool.stampToDate(String.valueOf(ash.get(0).getTime()));
-						 changed_time = Long.valueOf(ClockInTool.dateToStamp(ClockInTool.addtime(clock_date, "+"+arrive_late)));//晚到后应打卡时间
 					 }
-				 }
-				 attdate.setLatetime(latetime_);
-				 attdate.setChanged_time(changed_time);
+					 attdate.setLatetime(latetime_);
+					 attdate.setChanged_time(changed_time);
+			     }
 		     }
+		     
 			return ResultUtil.data(attdate);
 		 }else {
 			 
--
libgit2 0.26.0