LiGuang 3 years ago
parent
commit
92e820347d

+ 92 - 5
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendance/service/impl/AttendanceServiceImpl.java

@@ -68,7 +68,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
             int month = calendar.get(calendar.MONTH) + 1;//月份
             String cont = "2";
             String jq="";
-            StatutoryLeave one = statutoryLeaveService.getOne(date);
+            StatutoryLeave one = statutoryLeaveService.getOne(date,null);
             if (one!=null){
             jq=one.getType();
             }
@@ -149,7 +149,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                     }
                 }else  if (attendanceRule.getType().equals("2")){//规则类型 2,按班次上下班
                     List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, date,"");
-                    if (oneUserShift!=null&&oneUserShift.size()>0&&!oneUserShift.get(0).get("id").equals("0")){
+                    if (oneUserShift!=null&&oneUserShift.size()>0&&!oneUserShift.get(0).get("id").equals("0")&&oneUserShift.get(0).get("type").equals("0")){//不分段
                         if (attendances!=null&&attendances.size()>1){//判断打卡记录是否有上下班
                             Date startDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("startDate"), sd);
                             Date endDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("endDate"), sd);
@@ -177,6 +177,63 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                         }else {
                             cont="1";
                         }
+                    }else if (oneUserShift!=null&&oneUserShift.size()>0&&!oneUserShift.get(0).get("id").equals("0")&&!oneUserShift.get(0).get("type").equals("0")){//分段
+                        Date startDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("startDate"), sd);
+                        Date endDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("endDate"), sd);
+                        Date start2Date = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("start2Date"), sd);
+                        Date end2Date = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("end2Date"), sd);
+
+
+                        if (attendances!=null&&attendances.size()>3){//判断打卡记录是否有上下班
+                            Date usStartDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(0).getUsDate()), sd);
+                            Date usEndDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(1).getUsDate()), sd);
+                            Date usStart2Date = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(2).getUsDate()), sd);
+                            Date usEnd2Date = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(attendances.size() - 1).getUsDate()), sd);
+                            if (!attendances.get(0).getExceptionType().equals("正常")||!attendances.get(1).getExceptionType().equals("正常")||!attendances.get(2).getExceptionType().equals("正常")||!attendances.get(attendances.size()-1).getExceptionType().equals("正常")){
+                                cont="1";
+
+                            }else {
+                                if (attendances.get(0).getExceptionType().equals("正常")&&usStartDate.getTime()>startDate.getTime()){
+                                    cont="1";
+                                    attendances.get(0).setExceptionType("时间异常");
+                                    attendances.get(0).setHolidayType(oneUserShift.get(0).get("startDate").toString());
+                                }if (attendances.get(1).getExceptionType().equals("正常")&&usEndDate.getTime()<endDate.getTime()){
+                                    cont="1";
+                                    attendances.get(1).setExceptionType("时间异常");
+                                    attendances.get(1).setHolidayType(oneUserShift.get(0).get("endDate").toString());
+                                } if (attendances.get(2).getExceptionType().equals("正常")&&usStart2Date.getTime()>start2Date.getTime()){
+                                    cont="1";
+                                    attendances.get(2).setExceptionType("时间异常");
+                                    attendances.get(2).setHolidayType(oneUserShift.get(0).get("start2Date").toString());
+                                }if (attendances.get(attendances.size()-1).getExceptionType().equals("正常")&&usEnd2Date.getTime()<end2Date.getTime()){
+                                    cont="1";
+                                    attendances.get(attendances.size() - 1).setExceptionType("时间异常");
+                                    attendances.get(attendances.size() - 1).setHolidayType(oneUserShift.get(0).get("end2Date").toString());
+                                }
+                            }
+
+                        }else if (attendances!=null&&attendances.size()<4&&attendances.size()>0){
+                            Date usStartDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(0).getUsDate()), sd);
+                            cont="1";
+                            if (attendances.get(0).getExceptionType().equals("正常")&&usStartDate.getTime()>startDate.getTime()){
+                                attendances.get(0).setExceptionType("时间异常");
+                                attendances.get(0).setHolidayType(oneUserShift.get(0).get("startDate").toString());
+                            }if (attendances.get(1)!=null&&attendances.get(1).getExceptionType().equals("正常")){
+                                Date usEndDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(1).getUsDate()), sd);
+                                if (usEndDate.getTime()<endDate.getTime()){
+                                    attendances.get(1).setExceptionType("时间异常");
+                                    attendances.get(1).setHolidayType(oneUserShift.get(0).get("endDate").toString());
+                                }
+                            }if (attendances.get(2)!=null&&attendances.get(1).getExceptionType().equals("正常")){
+                                Date usStart2Date = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(2).getUsDate()), sd);
+                                if (usStart2Date.getTime()>start2Date.getTime()){
+                                    attendances.get(2).setExceptionType("时间异常");
+                                    attendances.get(2).setHolidayType(oneUserShift.get(0).get("start2Date").toString());
+                                }
+                            }
+                        }else {
+                            cont="1";
+                        }
                     }
                 }else if (attendanceRule.getType().equals("3")) {//规则类型 3,自由上下班
                     if (jq.equals("1")) {//优先判断是否存在法定节假日
@@ -219,7 +276,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                 String aDate = String.valueOf(year) + "-" + month + "-" + i;//循环拼接所有天数进行查询是否正常
                 String jqw="";
                 List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
-                StatutoryLeave stjq = statutoryLeaveService.getOne(aDate);
+                StatutoryLeave stjq = statutoryLeaveService.getOne(aDate,null);
                 if (stjq!=null){
                     jqw=stjq.getType();
                 }
@@ -275,7 +332,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                     }else  if (attendanceRule.getType().equals("2")){//规则类型 2,按班次上下班
                         at.setNotes("");
                         List<Map<String,Object>> oneUserShift = userShiftMapper.getOneUserShift(userid, aDate,"");
-                        if (oneUserShift!=null&&oneUserShift.size()>0){
+                        if (oneUserShift!=null&&oneUserShift.size()>0&&oneUserShift.get(0).get("type").equals("0")){
                             if (oneUserShift.get(0).get("id").equals("0")) {
                                 at.setNotes("休");
 
@@ -297,6 +354,36 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
                                     at.setIs("1");
                                 }
                             }
+                        }else if (oneUserShift!=null&&oneUserShift.size()>0&&oneUserShift.get(0).get("type").equals("1")){
+                            at.setNotes("班");
+                            Date startDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("startDate"), sd);
+                            Date endDate = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("endDate"), sd);
+                            Date start2Date = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("start2Date"), sd);
+                            Date end2Date = DateUtils.str2Date("2021-10-21 "+oneUserShift.get(0).get("end2Date"), sd);
+
+
+                            if (attendances!=null&&attendances.size()>3){//判断打卡记录是否有上下班
+                                Date usStartDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(0).getUsDate()), sd);
+                                Date usEndDate = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(1).getUsDate()), sd);
+                                Date usStart2Date = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(2).getUsDate()), sd);
+                                Date usEnd2Date = DateUtils.str2Date("2021-10-21 "+sdt.format(attendances.get(attendances.size() - 1).getUsDate()), sd);
+                                if (!attendances.get(0).getExceptionType().equals("正常")||!attendances.get(1).getExceptionType().equals("正常")||!attendances.get(2).getExceptionType().equals("正常")||!attendances.get(attendances.size()-1).getExceptionType().equals("正常")){
+                                    at.setIs("1");
+                                }else {
+                                    if (attendances.get(0).getExceptionType().equals("正常")&&usStartDate.getTime()>startDate.getTime()){
+                                        at.setIs("1");
+                                    }if (attendances.get(1).getExceptionType().equals("正常")&&usEndDate.getTime()<endDate.getTime()){
+                                        at.setIs("1");
+                                    } if (attendances.get(2).getExceptionType().equals("正常")&&usStart2Date.getTime()>start2Date.getTime()){
+                                        at.setIs("1");
+                                    }if (attendances.get(attendances.size()-1).getExceptionType().equals("正常")&&usEnd2Date.getTime()<end2Date.getTime()){
+                                        at.setIs("1");
+                                    }
+                                }
+
+                            }else {
+                                at.setIs("1");
+                            }
                         }
                     }else if (attendanceRule.getType().equals("3")){//规则类型 3,自由上下班
                         if (jqw.equals("1")){//优先判断是否存在法定节假日
@@ -367,7 +454,7 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
             String aDate = String.valueOf(year) + "-" + month + "-" + i;//循环拼接所有天数进行查询是否正常
             List<Attendance> acs = attendanceMapper.queryList(userid, aDate);
             String jqw = "";
-            StatutoryLeave one = statutoryLeaveService.getOne(date);
+            StatutoryLeave one = statutoryLeaveService.getOne(date,null);
             if (one != null) {
                 jqw = one.getType();
             }

+ 14 - 3
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/controller/StatutoryLeaveController.java

@@ -160,9 +160,20 @@ public class StatutoryLeaveController extends JeecgController<StatutoryLeave, IS
 
 
 	 @GetMapping(value = "/queryByDate")
-	 public Result<?> queryByDate(@RequestParam(name="startDate",required=true) String startDate) {
-		 StatutoryLeave statutoryLeave = statutoryLeaveService.getOne(startDate);
-		 return Result.OK(statutoryLeave);
+	 public Result<?> queryByDate(String startDate, String id) {
+		if (oConvertUtils.isNotEmpty(id)){
+			StatutoryLeave statutoryLeave = statutoryLeaveService.getOne(startDate,id);
+			if (oConvertUtils.isNotEmpty(statutoryLeave)){
+				return Result.OK(null);
+			}else {
+				StatutoryLeave se = statutoryLeaveService.getOne(startDate,null);
+				return Result.OK(se);
+			}
+		}else {
+			StatutoryLeave statutoryLeave = statutoryLeaveService.getOne(startDate,null);
+			return Result.OK(statutoryLeave);
+		}
+
 	 }
 
 	 /**

+ 1 - 1
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/mapper/StatutoryLeaveMapper.java

@@ -14,7 +14,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @Version: V1.0
  */
 public interface StatutoryLeaveMapper extends BaseMapper<StatutoryLeave> {
-    StatutoryLeave getOne(@Param("date")String date);
+    StatutoryLeave getOne(@Param("date")String date,@Param("id")String id);
 
     List<StatutoryLeave>lists(Page<StatutoryLeave> page, @Param("st")StatutoryLeave st);
 }

+ 3 - 0
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/mapper/xml/StatutoryLeaveMapper.xml

@@ -4,6 +4,9 @@
 
     <select id="getOne" resultType="org.jeecg.modules.geke.statutoryleave.entity.StatutoryLeave">
         select *from geke_statutory_leave where del_flag='0'
+        <if test="id!=null and ''!=id">
+            and id=#{id}
+        </if>
         <if test="date!=null and ''!=date">
             and date_format(#{date},'%Y-%m-%d')  BETWEEN date_format(start_date,'%Y-%m-%d') AND date_format(end_date,'%Y-%m-%d')
         </if>

+ 1 - 1
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/service/IStatutoryLeaveService.java

@@ -14,7 +14,7 @@ import java.util.List;
  * @Version: V1.0
  */
 public interface IStatutoryLeaveService extends IService<StatutoryLeave> {
-    StatutoryLeave getOne(String date);
+    StatutoryLeave getOne(String date,String id);
 
     Page<StatutoryLeave> lists(Page<StatutoryLeave> page,StatutoryLeave st);
 }

+ 2 - 2
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/statutoryleave/service/impl/StatutoryLeaveServiceImpl.java

@@ -25,8 +25,8 @@ public class StatutoryLeaveServiceImpl extends ServiceImpl<StatutoryLeaveMapper,
 
 
     @Override
-    public StatutoryLeave getOne(String date) {
-        return statutoryLeaveMapper.getOne(date);
+    public StatutoryLeave getOne(String date,String id) {
+        return statutoryLeaveMapper.getOne(date,id);
     }
 
     @Override

+ 1 - 1
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/userShift/mapper/xml/UserShiftMapper.xml

@@ -31,7 +31,7 @@ order by a.shift_date desc
         </foreach>
     </select>
     <select id="getOneUserShift" resultType="java.util.Map">
-        select a.shift_id as 'id', a.user_id as 'userid', b.name,date_format(b.start_date,'%H:%i:%s') as 'startDate',date_format(b.end_date,'%H:%i:%s') as 'endDate',date_format(a.shift_date,'%Y-%m-%d') as 'shiftDate'
+        select a.shift_id as 'id', a.user_id as 'userid',b.shift_type as 'type', b.name,date_format(b.start_date,'%H:%i:%s') as 'startDate',date_format(b.end_date,'%H:%i:%s') as 'endDate',date_format(b.start2_date,'%H:%i:%s') as 'start2Date',date_format(b.end2_date,'%H:%i:%s') as 'end2Date',date_format(a.shift_date,'%Y-%m-%d') as 'shiftDate'
         from geke_user_shift a left join geke_shift b on a.shift_id=b.id
         where 1=1
         <if test="userid!=null and ''!=userid">

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -16,6 +16,7 @@ import org.apache.commons.mail.EmailException;
 import org.apache.commons.mail.HtmlEmail;
 import org.apache.ibatis.annotations.Param;
 import org.apache.poi.sl.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.IndexedColors;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -70,6 +71,7 @@ import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
 import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -931,13 +933,11 @@ public class SysUserController {
             u.setType("2");
             u.setRemarks("国外友人");
             pageList=new ArrayList<>();
-            pageList.add(u);
         }
         ExportParams exportParams = new ExportParams("员工列表数据", "导出人:"+user.getRealname(), sName);
         exportParams.setImageBasePath(upLoadPath);
         mv.addObject(NormalExcelConstants.PARAMS, exportParams);
         mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
-
         return mv;
     }