diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java index d0c9a8f..e0cb1b8 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java @@ -32,6 +32,8 @@ List> getMaxDate(); + void initAnnualLeave(); + List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); Integer deleteAllByDate(@Param("beginDate") String beginDate, @Param("endDate") String endDate); diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java index d0c9a8f..e0cb1b8 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java @@ -32,6 +32,8 @@ List> getMaxDate(); + void initAnnualLeave(); + List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); Integer deleteAllByDate(@Param("beginDate") String beginDate, @Param("endDate") String endDate); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml index e814ce5..5489553 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml @@ -31,16 +31,17 @@ - select a.dept,a.name,DATE_FORMAT(a.date,'%Y-%m-%d') as date,a.rec_time,a.ot_minute - from ot_report a, staff b - where a.dept = b.dept - and a.name = b.name - and b.is_ot="是" + select a.DEPT_ID,a.NAME,DATE_FORMAT(a.DATE,'%Y-%m-%d') as date,a.REC_TIME,a.OT_MINUTE + from atd_ot_report a, sys_person b,sys_person_ext c + where a.DEPT_ID = b.DEPTID + and a.NAME = b.NAME + and b.ID = c.TARGET_ID + and c.COLUMN_9="1" - and a.date between #{beginDate} and #{endDate} + and a.DATE between #{beginDate} and #{endDate} - GROUP BY a.dept, a.name, a.date,a.rec_time,a.ot_minute - order by a.dept asc,a.name asc + GROUP BY a.DEPT_ID, a.NAME, a.DATE,a.REC_TIME,a.OT_MINUTE + order by a.DEPT_ID asc,a.NAME asc select a.ID as id,a.PERSON_ID as personId,a.DATETIME as datetime - from recognition_records a,sys_person b + from recognition_records a,sys_person b,bus_device c where - a.PERSON_ID=b.ID + a.PERSON_ID=b.ID and + a.DEV_CODE = C.DEV_CODE AND + LOCATE('2', C.DEV_TYPE)>0 and b.DEPTID = #{deptId} diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java index d0c9a8f..e0cb1b8 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java @@ -32,6 +32,8 @@ List> getMaxDate(); + void initAnnualLeave(); + List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); Integer deleteAllByDate(@Param("beginDate") String beginDate, @Param("endDate") String endDate); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml index e814ce5..5489553 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml @@ -31,16 +31,17 @@ select a.ID as id,a.PERSON_ID as personId,a.DATETIME as datetime - from recognition_records a,sys_person b + from recognition_records a,sys_person b,bus_device c where - a.PERSON_ID=b.ID + a.PERSON_ID=b.ID and + a.DEV_CODE = C.DEV_CODE AND + LOCATE('2', C.DEV_TYPE)>0 and b.DEPTID = #{deptId} diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml index edb2e01..d9981b4 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml @@ -176,6 +176,11 @@ + + update sys_person_ext set COLUMN_11 = COLUMN_10 + + + delete from report where 1=1 @@ -190,8 +195,8 @@ UPDATE atd_report a, sys_person b set a.REMARKS=(CASE - WHEN REMARKS is null THEN #{remarks} - WHEN REMARKS="" THEN #{remarks} + WHEN a.REMARKS is null THEN #{remarks} + WHEN a.REMARKS="" THEN #{remarks} ELSE CONCAT(a.REMARKS,";",#{remarks}) END) diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java index d0c9a8f..e0cb1b8 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java @@ -32,6 +32,8 @@ List> getMaxDate(); + void initAnnualLeave(); + List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); Integer deleteAllByDate(@Param("beginDate") String beginDate, @Param("endDate") String endDate); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml index e814ce5..5489553 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml @@ -31,16 +31,17 @@ select a.ID as id,a.PERSON_ID as personId,a.DATETIME as datetime - from recognition_records a,sys_person b + from recognition_records a,sys_person b,bus_device c where - a.PERSON_ID=b.ID + a.PERSON_ID=b.ID and + a.DEV_CODE = C.DEV_CODE AND + LOCATE('2', C.DEV_TYPE)>0 and b.DEPTID = #{deptId} diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml index edb2e01..d9981b4 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml @@ -176,6 +176,11 @@ + + update sys_person_ext set COLUMN_11 = COLUMN_10 + + + delete from report where 1=1 @@ -190,8 +195,8 @@ UPDATE atd_report a, sys_person b set a.REMARKS=(CASE - WHEN REMARKS is null THEN #{remarks} - WHEN REMARKS="" THEN #{remarks} + WHEN a.REMARKS is null THEN #{remarks} + WHEN a.REMARKS="" THEN #{remarks} ELSE CONCAT(a.REMARKS,";",#{remarks}) END) diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java index 8fa7099..2bf131a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.service.IService; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import java.util.List; @@ -18,6 +19,6 @@ void update(Person person); - List> getPersonListByDeptId(Long deptId); + List getPersonListByDeptId(Long deptId); } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java index d0c9a8f..e0cb1b8 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java @@ -32,6 +32,8 @@ List> getMaxDate(); + void initAnnualLeave(); + List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); Integer deleteAllByDate(@Param("beginDate") String beginDate, @Param("endDate") String endDate); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml index e814ce5..5489553 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml @@ -31,16 +31,17 @@ select a.ID as id,a.PERSON_ID as personId,a.DATETIME as datetime - from recognition_records a,sys_person b + from recognition_records a,sys_person b,bus_device c where - a.PERSON_ID=b.ID + a.PERSON_ID=b.ID and + a.DEV_CODE = C.DEV_CODE AND + LOCATE('2', C.DEV_TYPE)>0 and b.DEPTID = #{deptId} diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml index edb2e01..d9981b4 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml @@ -176,6 +176,11 @@ + + update sys_person_ext set COLUMN_11 = COLUMN_10 + + + delete from report where 1=1 @@ -190,8 +195,8 @@ UPDATE atd_report a, sys_person b set a.REMARKS=(CASE - WHEN REMARKS is null THEN #{remarks} - WHEN REMARKS="" THEN #{remarks} + WHEN a.REMARKS is null THEN #{remarks} + WHEN a.REMARKS="" THEN #{remarks} ELSE CONCAT(a.REMARKS,";",#{remarks}) END) diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java index 8fa7099..2bf131a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.service.IService; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import java.util.List; @@ -18,6 +19,6 @@ void update(Person person); - List> getPersonListByDeptId(Long deptId); + List getPersonListByDeptId(Long deptId); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java index b39ffb6..11d1cd0 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java @@ -21,7 +21,7 @@ */ public interface IGenerateReportService { - void generate(String beginDate,String endDate,Long deptId) throws ParseException; + int generate(String beginDate,String endDate,Long deptId) throws ParseException; ReportRules getReportRules(AtdRules AtdRules); String getRecTime(List> recRecordList,String personId,String date); diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java index d0c9a8f..e0cb1b8 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java @@ -32,6 +32,8 @@ List> getMaxDate(); + void initAnnualLeave(); + List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); Integer deleteAllByDate(@Param("beginDate") String beginDate, @Param("endDate") String endDate); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml index e814ce5..5489553 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml @@ -31,16 +31,17 @@ select a.ID as id,a.PERSON_ID as personId,a.DATETIME as datetime - from recognition_records a,sys_person b + from recognition_records a,sys_person b,bus_device c where - a.PERSON_ID=b.ID + a.PERSON_ID=b.ID and + a.DEV_CODE = C.DEV_CODE AND + LOCATE('2', C.DEV_TYPE)>0 and b.DEPTID = #{deptId} diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml index edb2e01..d9981b4 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml @@ -176,6 +176,11 @@ + + update sys_person_ext set COLUMN_11 = COLUMN_10 + + + delete from report where 1=1 @@ -190,8 +195,8 @@ UPDATE atd_report a, sys_person b set a.REMARKS=(CASE - WHEN REMARKS is null THEN #{remarks} - WHEN REMARKS="" THEN #{remarks} + WHEN a.REMARKS is null THEN #{remarks} + WHEN a.REMARKS="" THEN #{remarks} ELSE CONCAT(a.REMARKS,";",#{remarks}) END) diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java index 8fa7099..2bf131a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.service.IService; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import java.util.List; @@ -18,6 +19,6 @@ void update(Person person); - List> getPersonListByDeptId(Long deptId); + List getPersonListByDeptId(Long deptId); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java index b39ffb6..11d1cd0 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java @@ -21,7 +21,7 @@ */ public interface IGenerateReportService { - void generate(String beginDate,String endDate,Long deptId) throws ParseException; + int generate(String beginDate,String endDate,Long deptId) throws ParseException; ReportRules getReportRules(AtdRules AtdRules); String getRecTime(List> recRecordList,String personId,String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java index fdea829..d97a62a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java @@ -30,6 +30,8 @@ Integer updateRemarksNullById(@Param("id") Integer id); + void initAnnualLeave(); + List> getMaxDate(); List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java index d0c9a8f..e0cb1b8 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java @@ -32,6 +32,8 @@ List> getMaxDate(); + void initAnnualLeave(); + List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); Integer deleteAllByDate(@Param("beginDate") String beginDate, @Param("endDate") String endDate); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml index e814ce5..5489553 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml @@ -31,16 +31,17 @@ select a.ID as id,a.PERSON_ID as personId,a.DATETIME as datetime - from recognition_records a,sys_person b + from recognition_records a,sys_person b,bus_device c where - a.PERSON_ID=b.ID + a.PERSON_ID=b.ID and + a.DEV_CODE = C.DEV_CODE AND + LOCATE('2', C.DEV_TYPE)>0 and b.DEPTID = #{deptId} diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml index edb2e01..d9981b4 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml @@ -176,6 +176,11 @@ + + update sys_person_ext set COLUMN_11 = COLUMN_10 + + + delete from report where 1=1 @@ -190,8 +195,8 @@ UPDATE atd_report a, sys_person b set a.REMARKS=(CASE - WHEN REMARKS is null THEN #{remarks} - WHEN REMARKS="" THEN #{remarks} + WHEN a.REMARKS is null THEN #{remarks} + WHEN a.REMARKS="" THEN #{remarks} ELSE CONCAT(a.REMARKS,";",#{remarks}) END) diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java index 8fa7099..2bf131a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.service.IService; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import java.util.List; @@ -18,6 +19,6 @@ void update(Person person); - List> getPersonListByDeptId(Long deptId); + List getPersonListByDeptId(Long deptId); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java index b39ffb6..11d1cd0 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java @@ -21,7 +21,7 @@ */ public interface IGenerateReportService { - void generate(String beginDate,String endDate,Long deptId) throws ParseException; + int generate(String beginDate,String endDate,Long deptId) throws ParseException; ReportRules getReportRules(AtdRules AtdRules); String getRecTime(List> recRecordList,String personId,String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java index fdea829..d97a62a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java @@ -30,6 +30,8 @@ Integer updateRemarksNullById(@Param("id") Integer id); + void initAnnualLeave(); + List> getMaxDate(); List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java index df74a31..c3b0240 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.common.constant.state.Order; import com.casic.missiles.core.common.service.ICommonPersonService; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IAtdPersonService; import org.slf4j.Logger; @@ -40,12 +41,13 @@ } @Override - public List> getPersonListByDeptId(Long deptId){ - List> scopePersons=null; + public List getPersonListByDeptId(Long deptId){ + List scopePersons=null; try { - Page page; - page = new Page(0, Integer.MAX_VALUE); + Page page = new Page<>(0,Integer.MAX_VALUE); page.setOpenSort(false); + page.setCurrent(0); + page.setLimit(Integer.MAX_VALUE); page.setSearchCount(false); EntityWrapper> query = new EntityWrapper<>(); if (ToolUtil.isNotEmpty(deptId + "")) { @@ -53,7 +55,7 @@ } query.andNew().eq(PersonConst.TABLE_DELFLAG, 0); - scopePersons = commonPersonService.selectDataScopePersonMap(page, null, query); + scopePersons = commonPersonService.selectDataScopePerson(page, null, query,null); } catch (Exception e){ logger.error(e.getMessage()); e.printStackTrace(); diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java index d0c9a8f..e0cb1b8 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java @@ -32,6 +32,8 @@ List> getMaxDate(); + void initAnnualLeave(); + List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); Integer deleteAllByDate(@Param("beginDate") String beginDate, @Param("endDate") String endDate); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml index e814ce5..5489553 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml @@ -31,16 +31,17 @@ select a.ID as id,a.PERSON_ID as personId,a.DATETIME as datetime - from recognition_records a,sys_person b + from recognition_records a,sys_person b,bus_device c where - a.PERSON_ID=b.ID + a.PERSON_ID=b.ID and + a.DEV_CODE = C.DEV_CODE AND + LOCATE('2', C.DEV_TYPE)>0 and b.DEPTID = #{deptId} diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml index edb2e01..d9981b4 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml @@ -176,6 +176,11 @@ + + update sys_person_ext set COLUMN_11 = COLUMN_10 + + + delete from report where 1=1 @@ -190,8 +195,8 @@ UPDATE atd_report a, sys_person b set a.REMARKS=(CASE - WHEN REMARKS is null THEN #{remarks} - WHEN REMARKS="" THEN #{remarks} + WHEN a.REMARKS is null THEN #{remarks} + WHEN a.REMARKS="" THEN #{remarks} ELSE CONCAT(a.REMARKS,";",#{remarks}) END) diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java index 8fa7099..2bf131a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.service.IService; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import java.util.List; @@ -18,6 +19,6 @@ void update(Person person); - List> getPersonListByDeptId(Long deptId); + List getPersonListByDeptId(Long deptId); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java index b39ffb6..11d1cd0 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java @@ -21,7 +21,7 @@ */ public interface IGenerateReportService { - void generate(String beginDate,String endDate,Long deptId) throws ParseException; + int generate(String beginDate,String endDate,Long deptId) throws ParseException; ReportRules getReportRules(AtdRules AtdRules); String getRecTime(List> recRecordList,String personId,String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java index fdea829..d97a62a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java @@ -30,6 +30,8 @@ Integer updateRemarksNullById(@Param("id") Integer id); + void initAnnualLeave(); + List> getMaxDate(); List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java index df74a31..c3b0240 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.common.constant.state.Order; import com.casic.missiles.core.common.service.ICommonPersonService; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IAtdPersonService; import org.slf4j.Logger; @@ -40,12 +41,13 @@ } @Override - public List> getPersonListByDeptId(Long deptId){ - List> scopePersons=null; + public List getPersonListByDeptId(Long deptId){ + List scopePersons=null; try { - Page page; - page = new Page(0, Integer.MAX_VALUE); + Page page = new Page<>(0,Integer.MAX_VALUE); page.setOpenSort(false); + page.setCurrent(0); + page.setLimit(Integer.MAX_VALUE); page.setSearchCount(false); EntityWrapper> query = new EntityWrapper<>(); if (ToolUtil.isNotEmpty(deptId + "")) { @@ -53,7 +55,7 @@ } query.andNew().eq(PersonConst.TABLE_DELFLAG, 0); - scopePersons = commonPersonService.selectDataScopePersonMap(page, null, query); + scopePersons = commonPersonService.selectDataScopePerson(page, null, query,null); } catch (Exception e){ logger.error(e.getMessage()); e.printStackTrace(); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java index 4991e34..1b5c1af 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java @@ -6,6 +6,7 @@ import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.dao.ReportMapper; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; import org.slf4j.Logger; @@ -67,7 +68,7 @@ @Override - public void generate(String beginDate, String endDate,Long deptId) throws ParseException { + public int generate(String beginDate, String endDate,Long deptId) throws ParseException { List reportList = new ArrayList<>(); List otReportList = new ArrayList<>(); @@ -84,7 +85,7 @@ AtdRules atdRules = atdRulesService.selectList(null).get(0); if(atdRules == null || ToolUtil.isEmpty(atdRules.getWorkTimeBegin()) || ToolUtil.isEmpty(atdRules.getWorkTimeEnd()) || ToolUtil.isEmpty(atdRules.getBreakTimeBegin()) || ToolUtil.isEmpty(atdRules.getBreakTimeEnd()) ){ - return; + return -1; } ReportRules reportRules = getReportRules(atdRules); LocalTime shangban = reportRules.getShangban(); @@ -101,15 +102,22 @@ try { //分部门生成报表数据 for (Dept dept : deptList) { - List> currentStaffList = new ArrayList<>(); + List currentStaffList = new ArrayList<>(); currentStaffList = atdPersonService.getPersonListByDeptId(dept.getId());// 当前部门的员工名单 + // 滤除设置为不考勤的员工 + for(PersonDto personDto: currentStaffList){ + Map ext = (Map)personDto.getExt(); + if(ext.get("isKaoqin").toString().equals("0")){ + currentStaffList.remove(personDto); + } + } //得到当前部门所有员工的识别记录 List> currentRecordByDept = recRecordService.selectRecordByDeptId(dept.getId()+"", beginDate, endDate); - for (Map mStaff : currentStaffList) { - String currentID = mStaff.get("id").toString(); - String currentName = mStaff.get("name").toString(); + for (PersonDto mStaff : currentStaffList) { + String currentID = mStaff.getId().toString(); + String currentName = mStaff.getName(); for (int i = 0; i < days; i++) { Report mReport = new Report(); OtReport mOtReport = new OtReport(); @@ -188,17 +196,11 @@ //正常出勤 if ((t1.isBefore(shangban) || t1.equals(shangban)) && (t2.isAfter(xiaban) || t2.equals(xiaban))) { - - //将正常出勤数据写入reportList - reportList.add(mReport); - long mm = Duration.between(xiaban, t2).toMinutes(); if (mm >= ot) { mOtReport.setOtMinute(Convert.toStr(mm)); //加班,填写加班信息 otReportList.add(mOtReport); } - - continue; } //有异常情况 @@ -345,21 +347,10 @@ //t1>=17:30 else if (t1.isAfter(xiaban) || t1.equals(xiaban)) { mReport.setAbsentOneDay("√"); - - //判断是否已有相关备注 - List> remarks = remarksService.selectByPersonIdAndDate(currentID, currentDate); - if (remarks.size() > 0) { - for (Map m : remarks) { - if (m.get("remarks_type").toString().trim().equals("5")) { - mReport.setRemarks(m.get("remarks").toString()); - } - } - } } } } //endif(timeArr.Length == 2) - else if (timeArr.length == 1 || timeString.equals(""))//识别记录为空或只有一次识别记录,旷工一天 { if (timeString.equals("")) { @@ -383,7 +374,7 @@ } catch (Exception e) { logger.error("异常 : generate处理数据错误。" + e.getMessage()); -// return false; + return -2; } int oldI=0; @@ -431,8 +422,8 @@ reportService.updateReport(Integer.parseInt(oldReport.get("id").toString()), time2, cdNew, ztNew, kgAmNew, kgPmNew, kgNew, remarksOld); break; } - //用户没有在旧的考勤结果上加备注或者新的考勤结果自动添加了旷工1天备注) - if (remarksOld.equals("")||(remarksNew!=null&&remarksNew.contains("旷工1天"))){ + //用户没有在旧的考勤结果上加备注或者新的考勤结果自动添加了旷工一天备注) + if (remarksOld.equals("")||(remarksNew!=null&&remarksNew.contains("旷工一天"))){ reportService.updateReport(Integer.parseInt(oldReport.get("id").toString()), time2, cdNew, ztNew, kgAmNew, kgPmNew, kgNew, remarksNew); }else{ String staffId = ""; @@ -490,7 +481,7 @@ if (!kgOld.equals(kgNew)) { for (int i = 0; i < remarksArr.length; i++) { - if (!remarksArr[i].contains("旷工1天")) { + if (!remarksArr[i].contains("旷工一天")) { if(remarksArr[i].contains("上午旷工")){ if(kgAmNew.equals("—")){ remarksArr[i]=""; @@ -583,15 +574,15 @@ } catch (Exception ex) { // log.error("异常 : generate存数据库错误。reportCount = " +reportList.size() + ", otReportCount = " +otReportList.size() +"。"+ ex.getMessage()); System.out.println("存入报表数据失败!"); + return -3; // return false; } -// return true; + return 0; } - private List getDeptList(long deptId) - { + private List getDeptList(long deptId) { List deptList = new ArrayList<>(); deptList = commonDeptService.getDeptByTips("");//获取所有部门列表 deptList.remove(0);//去除“顶级”部门 @@ -607,8 +598,7 @@ } @Override - public String getRecTime(List> recRecordList,String personId,String date) - { + public String getRecTime(List> recRecordList,String personId,String date){ DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String recTime=""; for(Map map:recRecordList){ @@ -624,8 +614,7 @@ } @Override - public ReportRules getReportRules(AtdRules AtdRules) - { + public ReportRules getReportRules(AtdRules AtdRules) { ReportRules reportRules = new ReportRules(); try { @@ -723,10 +712,10 @@ if (typeByRecord.equals("5")) { if (exsitType.equals("5")) { if(isEmpty) { - mReport.setRemarks("旷工1天:" + remarksInfo); + mReport.setRemarks("旷工一天:" + remarksInfo); }else { String st = mReport.getRemarks(); - mReport.setRemarks(st + ";旷工1天:" + remarksInfo); + mReport.setRemarks(st + ";旷工一天:" + remarksInfo); } isEmpty = false; } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java index d0c9a8f..e0cb1b8 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java @@ -32,6 +32,8 @@ List> getMaxDate(); + void initAnnualLeave(); + List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); Integer deleteAllByDate(@Param("beginDate") String beginDate, @Param("endDate") String endDate); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml index e814ce5..5489553 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml @@ -31,16 +31,17 @@ select a.ID as id,a.PERSON_ID as personId,a.DATETIME as datetime - from recognition_records a,sys_person b + from recognition_records a,sys_person b,bus_device c where - a.PERSON_ID=b.ID + a.PERSON_ID=b.ID and + a.DEV_CODE = C.DEV_CODE AND + LOCATE('2', C.DEV_TYPE)>0 and b.DEPTID = #{deptId} diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml index edb2e01..d9981b4 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml @@ -176,6 +176,11 @@ + + update sys_person_ext set COLUMN_11 = COLUMN_10 + + + delete from report where 1=1 @@ -190,8 +195,8 @@ UPDATE atd_report a, sys_person b set a.REMARKS=(CASE - WHEN REMARKS is null THEN #{remarks} - WHEN REMARKS="" THEN #{remarks} + WHEN a.REMARKS is null THEN #{remarks} + WHEN a.REMARKS="" THEN #{remarks} ELSE CONCAT(a.REMARKS,";",#{remarks}) END) diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java index 8fa7099..2bf131a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.service.IService; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import java.util.List; @@ -18,6 +19,6 @@ void update(Person person); - List> getPersonListByDeptId(Long deptId); + List getPersonListByDeptId(Long deptId); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java index b39ffb6..11d1cd0 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java @@ -21,7 +21,7 @@ */ public interface IGenerateReportService { - void generate(String beginDate,String endDate,Long deptId) throws ParseException; + int generate(String beginDate,String endDate,Long deptId) throws ParseException; ReportRules getReportRules(AtdRules AtdRules); String getRecTime(List> recRecordList,String personId,String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java index fdea829..d97a62a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java @@ -30,6 +30,8 @@ Integer updateRemarksNullById(@Param("id") Integer id); + void initAnnualLeave(); + List> getMaxDate(); List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java index df74a31..c3b0240 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.common.constant.state.Order; import com.casic.missiles.core.common.service.ICommonPersonService; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IAtdPersonService; import org.slf4j.Logger; @@ -40,12 +41,13 @@ } @Override - public List> getPersonListByDeptId(Long deptId){ - List> scopePersons=null; + public List getPersonListByDeptId(Long deptId){ + List scopePersons=null; try { - Page page; - page = new Page(0, Integer.MAX_VALUE); + Page page = new Page<>(0,Integer.MAX_VALUE); page.setOpenSort(false); + page.setCurrent(0); + page.setLimit(Integer.MAX_VALUE); page.setSearchCount(false); EntityWrapper> query = new EntityWrapper<>(); if (ToolUtil.isNotEmpty(deptId + "")) { @@ -53,7 +55,7 @@ } query.andNew().eq(PersonConst.TABLE_DELFLAG, 0); - scopePersons = commonPersonService.selectDataScopePersonMap(page, null, query); + scopePersons = commonPersonService.selectDataScopePerson(page, null, query,null); } catch (Exception e){ logger.error(e.getMessage()); e.printStackTrace(); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java index 4991e34..1b5c1af 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java @@ -6,6 +6,7 @@ import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.dao.ReportMapper; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; import org.slf4j.Logger; @@ -67,7 +68,7 @@ @Override - public void generate(String beginDate, String endDate,Long deptId) throws ParseException { + public int generate(String beginDate, String endDate,Long deptId) throws ParseException { List reportList = new ArrayList<>(); List otReportList = new ArrayList<>(); @@ -84,7 +85,7 @@ AtdRules atdRules = atdRulesService.selectList(null).get(0); if(atdRules == null || ToolUtil.isEmpty(atdRules.getWorkTimeBegin()) || ToolUtil.isEmpty(atdRules.getWorkTimeEnd()) || ToolUtil.isEmpty(atdRules.getBreakTimeBegin()) || ToolUtil.isEmpty(atdRules.getBreakTimeEnd()) ){ - return; + return -1; } ReportRules reportRules = getReportRules(atdRules); LocalTime shangban = reportRules.getShangban(); @@ -101,15 +102,22 @@ try { //分部门生成报表数据 for (Dept dept : deptList) { - List> currentStaffList = new ArrayList<>(); + List currentStaffList = new ArrayList<>(); currentStaffList = atdPersonService.getPersonListByDeptId(dept.getId());// 当前部门的员工名单 + // 滤除设置为不考勤的员工 + for(PersonDto personDto: currentStaffList){ + Map ext = (Map)personDto.getExt(); + if(ext.get("isKaoqin").toString().equals("0")){ + currentStaffList.remove(personDto); + } + } //得到当前部门所有员工的识别记录 List> currentRecordByDept = recRecordService.selectRecordByDeptId(dept.getId()+"", beginDate, endDate); - for (Map mStaff : currentStaffList) { - String currentID = mStaff.get("id").toString(); - String currentName = mStaff.get("name").toString(); + for (PersonDto mStaff : currentStaffList) { + String currentID = mStaff.getId().toString(); + String currentName = mStaff.getName(); for (int i = 0; i < days; i++) { Report mReport = new Report(); OtReport mOtReport = new OtReport(); @@ -188,17 +196,11 @@ //正常出勤 if ((t1.isBefore(shangban) || t1.equals(shangban)) && (t2.isAfter(xiaban) || t2.equals(xiaban))) { - - //将正常出勤数据写入reportList - reportList.add(mReport); - long mm = Duration.between(xiaban, t2).toMinutes(); if (mm >= ot) { mOtReport.setOtMinute(Convert.toStr(mm)); //加班,填写加班信息 otReportList.add(mOtReport); } - - continue; } //有异常情况 @@ -345,21 +347,10 @@ //t1>=17:30 else if (t1.isAfter(xiaban) || t1.equals(xiaban)) { mReport.setAbsentOneDay("√"); - - //判断是否已有相关备注 - List> remarks = remarksService.selectByPersonIdAndDate(currentID, currentDate); - if (remarks.size() > 0) { - for (Map m : remarks) { - if (m.get("remarks_type").toString().trim().equals("5")) { - mReport.setRemarks(m.get("remarks").toString()); - } - } - } } } } //endif(timeArr.Length == 2) - else if (timeArr.length == 1 || timeString.equals(""))//识别记录为空或只有一次识别记录,旷工一天 { if (timeString.equals("")) { @@ -383,7 +374,7 @@ } catch (Exception e) { logger.error("异常 : generate处理数据错误。" + e.getMessage()); -// return false; + return -2; } int oldI=0; @@ -431,8 +422,8 @@ reportService.updateReport(Integer.parseInt(oldReport.get("id").toString()), time2, cdNew, ztNew, kgAmNew, kgPmNew, kgNew, remarksOld); break; } - //用户没有在旧的考勤结果上加备注或者新的考勤结果自动添加了旷工1天备注) - if (remarksOld.equals("")||(remarksNew!=null&&remarksNew.contains("旷工1天"))){ + //用户没有在旧的考勤结果上加备注或者新的考勤结果自动添加了旷工一天备注) + if (remarksOld.equals("")||(remarksNew!=null&&remarksNew.contains("旷工一天"))){ reportService.updateReport(Integer.parseInt(oldReport.get("id").toString()), time2, cdNew, ztNew, kgAmNew, kgPmNew, kgNew, remarksNew); }else{ String staffId = ""; @@ -490,7 +481,7 @@ if (!kgOld.equals(kgNew)) { for (int i = 0; i < remarksArr.length; i++) { - if (!remarksArr[i].contains("旷工1天")) { + if (!remarksArr[i].contains("旷工一天")) { if(remarksArr[i].contains("上午旷工")){ if(kgAmNew.equals("—")){ remarksArr[i]=""; @@ -583,15 +574,15 @@ } catch (Exception ex) { // log.error("异常 : generate存数据库错误。reportCount = " +reportList.size() + ", otReportCount = " +otReportList.size() +"。"+ ex.getMessage()); System.out.println("存入报表数据失败!"); + return -3; // return false; } -// return true; + return 0; } - private List getDeptList(long deptId) - { + private List getDeptList(long deptId) { List deptList = new ArrayList<>(); deptList = commonDeptService.getDeptByTips("");//获取所有部门列表 deptList.remove(0);//去除“顶级”部门 @@ -607,8 +598,7 @@ } @Override - public String getRecTime(List> recRecordList,String personId,String date) - { + public String getRecTime(List> recRecordList,String personId,String date){ DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String recTime=""; for(Map map:recRecordList){ @@ -624,8 +614,7 @@ } @Override - public ReportRules getReportRules(AtdRules AtdRules) - { + public ReportRules getReportRules(AtdRules AtdRules) { ReportRules reportRules = new ReportRules(); try { @@ -723,10 +712,10 @@ if (typeByRecord.equals("5")) { if (exsitType.equals("5")) { if(isEmpty) { - mReport.setRemarks("旷工1天:" + remarksInfo); + mReport.setRemarks("旷工一天:" + remarksInfo); }else { String st = mReport.getRemarks(); - mReport.setRemarks(st + ";旷工1天:" + remarksInfo); + mReport.setRemarks(st + ";旷工一天:" + remarksInfo); } isEmpty = false; } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java index 236dbdd..9ae2d47 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java @@ -108,5 +108,9 @@ return this.baseMapper.updateBreastfeedRemarks(remarks,personId,beginDate,endDate,remarksType); } + @Override + public void initAnnualLeave(){ + this.baseMapper.initAnnualLeave(); + } } diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java index d0c9a8f..e0cb1b8 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java @@ -32,6 +32,8 @@ List> getMaxDate(); + void initAnnualLeave(); + List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); Integer deleteAllByDate(@Param("beginDate") String beginDate, @Param("endDate") String endDate); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml index e814ce5..5489553 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml @@ -31,16 +31,17 @@ select a.ID as id,a.PERSON_ID as personId,a.DATETIME as datetime - from recognition_records a,sys_person b + from recognition_records a,sys_person b,bus_device c where - a.PERSON_ID=b.ID + a.PERSON_ID=b.ID and + a.DEV_CODE = C.DEV_CODE AND + LOCATE('2', C.DEV_TYPE)>0 and b.DEPTID = #{deptId} diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml index edb2e01..d9981b4 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml @@ -176,6 +176,11 @@ + + update sys_person_ext set COLUMN_11 = COLUMN_10 + + + delete from report where 1=1 @@ -190,8 +195,8 @@ UPDATE atd_report a, sys_person b set a.REMARKS=(CASE - WHEN REMARKS is null THEN #{remarks} - WHEN REMARKS="" THEN #{remarks} + WHEN a.REMARKS is null THEN #{remarks} + WHEN a.REMARKS="" THEN #{remarks} ELSE CONCAT(a.REMARKS,";",#{remarks}) END) diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java index 8fa7099..2bf131a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.service.IService; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import java.util.List; @@ -18,6 +19,6 @@ void update(Person person); - List> getPersonListByDeptId(Long deptId); + List getPersonListByDeptId(Long deptId); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java index b39ffb6..11d1cd0 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java @@ -21,7 +21,7 @@ */ public interface IGenerateReportService { - void generate(String beginDate,String endDate,Long deptId) throws ParseException; + int generate(String beginDate,String endDate,Long deptId) throws ParseException; ReportRules getReportRules(AtdRules AtdRules); String getRecTime(List> recRecordList,String personId,String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java index fdea829..d97a62a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java @@ -30,6 +30,8 @@ Integer updateRemarksNullById(@Param("id") Integer id); + void initAnnualLeave(); + List> getMaxDate(); List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java index df74a31..c3b0240 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.common.constant.state.Order; import com.casic.missiles.core.common.service.ICommonPersonService; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IAtdPersonService; import org.slf4j.Logger; @@ -40,12 +41,13 @@ } @Override - public List> getPersonListByDeptId(Long deptId){ - List> scopePersons=null; + public List getPersonListByDeptId(Long deptId){ + List scopePersons=null; try { - Page page; - page = new Page(0, Integer.MAX_VALUE); + Page page = new Page<>(0,Integer.MAX_VALUE); page.setOpenSort(false); + page.setCurrent(0); + page.setLimit(Integer.MAX_VALUE); page.setSearchCount(false); EntityWrapper> query = new EntityWrapper<>(); if (ToolUtil.isNotEmpty(deptId + "")) { @@ -53,7 +55,7 @@ } query.andNew().eq(PersonConst.TABLE_DELFLAG, 0); - scopePersons = commonPersonService.selectDataScopePersonMap(page, null, query); + scopePersons = commonPersonService.selectDataScopePerson(page, null, query,null); } catch (Exception e){ logger.error(e.getMessage()); e.printStackTrace(); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java index 4991e34..1b5c1af 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java @@ -6,6 +6,7 @@ import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.dao.ReportMapper; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; import org.slf4j.Logger; @@ -67,7 +68,7 @@ @Override - public void generate(String beginDate, String endDate,Long deptId) throws ParseException { + public int generate(String beginDate, String endDate,Long deptId) throws ParseException { List reportList = new ArrayList<>(); List otReportList = new ArrayList<>(); @@ -84,7 +85,7 @@ AtdRules atdRules = atdRulesService.selectList(null).get(0); if(atdRules == null || ToolUtil.isEmpty(atdRules.getWorkTimeBegin()) || ToolUtil.isEmpty(atdRules.getWorkTimeEnd()) || ToolUtil.isEmpty(atdRules.getBreakTimeBegin()) || ToolUtil.isEmpty(atdRules.getBreakTimeEnd()) ){ - return; + return -1; } ReportRules reportRules = getReportRules(atdRules); LocalTime shangban = reportRules.getShangban(); @@ -101,15 +102,22 @@ try { //分部门生成报表数据 for (Dept dept : deptList) { - List> currentStaffList = new ArrayList<>(); + List currentStaffList = new ArrayList<>(); currentStaffList = atdPersonService.getPersonListByDeptId(dept.getId());// 当前部门的员工名单 + // 滤除设置为不考勤的员工 + for(PersonDto personDto: currentStaffList){ + Map ext = (Map)personDto.getExt(); + if(ext.get("isKaoqin").toString().equals("0")){ + currentStaffList.remove(personDto); + } + } //得到当前部门所有员工的识别记录 List> currentRecordByDept = recRecordService.selectRecordByDeptId(dept.getId()+"", beginDate, endDate); - for (Map mStaff : currentStaffList) { - String currentID = mStaff.get("id").toString(); - String currentName = mStaff.get("name").toString(); + for (PersonDto mStaff : currentStaffList) { + String currentID = mStaff.getId().toString(); + String currentName = mStaff.getName(); for (int i = 0; i < days; i++) { Report mReport = new Report(); OtReport mOtReport = new OtReport(); @@ -188,17 +196,11 @@ //正常出勤 if ((t1.isBefore(shangban) || t1.equals(shangban)) && (t2.isAfter(xiaban) || t2.equals(xiaban))) { - - //将正常出勤数据写入reportList - reportList.add(mReport); - long mm = Duration.between(xiaban, t2).toMinutes(); if (mm >= ot) { mOtReport.setOtMinute(Convert.toStr(mm)); //加班,填写加班信息 otReportList.add(mOtReport); } - - continue; } //有异常情况 @@ -345,21 +347,10 @@ //t1>=17:30 else if (t1.isAfter(xiaban) || t1.equals(xiaban)) { mReport.setAbsentOneDay("√"); - - //判断是否已有相关备注 - List> remarks = remarksService.selectByPersonIdAndDate(currentID, currentDate); - if (remarks.size() > 0) { - for (Map m : remarks) { - if (m.get("remarks_type").toString().trim().equals("5")) { - mReport.setRemarks(m.get("remarks").toString()); - } - } - } } } } //endif(timeArr.Length == 2) - else if (timeArr.length == 1 || timeString.equals(""))//识别记录为空或只有一次识别记录,旷工一天 { if (timeString.equals("")) { @@ -383,7 +374,7 @@ } catch (Exception e) { logger.error("异常 : generate处理数据错误。" + e.getMessage()); -// return false; + return -2; } int oldI=0; @@ -431,8 +422,8 @@ reportService.updateReport(Integer.parseInt(oldReport.get("id").toString()), time2, cdNew, ztNew, kgAmNew, kgPmNew, kgNew, remarksOld); break; } - //用户没有在旧的考勤结果上加备注或者新的考勤结果自动添加了旷工1天备注) - if (remarksOld.equals("")||(remarksNew!=null&&remarksNew.contains("旷工1天"))){ + //用户没有在旧的考勤结果上加备注或者新的考勤结果自动添加了旷工一天备注) + if (remarksOld.equals("")||(remarksNew!=null&&remarksNew.contains("旷工一天"))){ reportService.updateReport(Integer.parseInt(oldReport.get("id").toString()), time2, cdNew, ztNew, kgAmNew, kgPmNew, kgNew, remarksNew); }else{ String staffId = ""; @@ -490,7 +481,7 @@ if (!kgOld.equals(kgNew)) { for (int i = 0; i < remarksArr.length; i++) { - if (!remarksArr[i].contains("旷工1天")) { + if (!remarksArr[i].contains("旷工一天")) { if(remarksArr[i].contains("上午旷工")){ if(kgAmNew.equals("—")){ remarksArr[i]=""; @@ -583,15 +574,15 @@ } catch (Exception ex) { // log.error("异常 : generate存数据库错误。reportCount = " +reportList.size() + ", otReportCount = " +otReportList.size() +"。"+ ex.getMessage()); System.out.println("存入报表数据失败!"); + return -3; // return false; } -// return true; + return 0; } - private List getDeptList(long deptId) - { + private List getDeptList(long deptId) { List deptList = new ArrayList<>(); deptList = commonDeptService.getDeptByTips("");//获取所有部门列表 deptList.remove(0);//去除“顶级”部门 @@ -607,8 +598,7 @@ } @Override - public String getRecTime(List> recRecordList,String personId,String date) - { + public String getRecTime(List> recRecordList,String personId,String date){ DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String recTime=""; for(Map map:recRecordList){ @@ -624,8 +614,7 @@ } @Override - public ReportRules getReportRules(AtdRules AtdRules) - { + public ReportRules getReportRules(AtdRules AtdRules) { ReportRules reportRules = new ReportRules(); try { @@ -723,10 +712,10 @@ if (typeByRecord.equals("5")) { if (exsitType.equals("5")) { if(isEmpty) { - mReport.setRemarks("旷工1天:" + remarksInfo); + mReport.setRemarks("旷工一天:" + remarksInfo); }else { String st = mReport.getRemarks(); - mReport.setRemarks(st + ";旷工1天:" + remarksInfo); + mReport.setRemarks(st + ";旷工一天:" + remarksInfo); } isEmpty = false; } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java index 236dbdd..9ae2d47 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java @@ -108,5 +108,9 @@ return this.baseMapper.updateBreastfeedRemarks(remarks,personId,beginDate,endDate,remarksType); } + @Override + public void initAnnualLeave(){ + this.baseMapper.initAnnualLeave(); + } } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java index cfa238f..083ff0d 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java @@ -21,9 +21,6 @@ */ public class ReportWarpper extends BaseControllerWarpper { -// @Resource -// private IStaffService staffService; - ICommonPermissionService commonPermissionService = SpringContextHolder.getBean(ICommonPermissionService.class); ICommonPersonService commonPersonService = SpringContextHolder.getBean(ICommonPersonService.class); diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java index d0c9a8f..e0cb1b8 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java @@ -32,6 +32,8 @@ List> getMaxDate(); + void initAnnualLeave(); + List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); Integer deleteAllByDate(@Param("beginDate") String beginDate, @Param("endDate") String endDate); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml index e814ce5..5489553 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml @@ -31,16 +31,17 @@ select a.ID as id,a.PERSON_ID as personId,a.DATETIME as datetime - from recognition_records a,sys_person b + from recognition_records a,sys_person b,bus_device c where - a.PERSON_ID=b.ID + a.PERSON_ID=b.ID and + a.DEV_CODE = C.DEV_CODE AND + LOCATE('2', C.DEV_TYPE)>0 and b.DEPTID = #{deptId} diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml index edb2e01..d9981b4 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml @@ -176,6 +176,11 @@ + + update sys_person_ext set COLUMN_11 = COLUMN_10 + + + delete from report where 1=1 @@ -190,8 +195,8 @@ UPDATE atd_report a, sys_person b set a.REMARKS=(CASE - WHEN REMARKS is null THEN #{remarks} - WHEN REMARKS="" THEN #{remarks} + WHEN a.REMARKS is null THEN #{remarks} + WHEN a.REMARKS="" THEN #{remarks} ELSE CONCAT(a.REMARKS,";",#{remarks}) END) diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java index 8fa7099..2bf131a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.service.IService; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import java.util.List; @@ -18,6 +19,6 @@ void update(Person person); - List> getPersonListByDeptId(Long deptId); + List getPersonListByDeptId(Long deptId); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java index b39ffb6..11d1cd0 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java @@ -21,7 +21,7 @@ */ public interface IGenerateReportService { - void generate(String beginDate,String endDate,Long deptId) throws ParseException; + int generate(String beginDate,String endDate,Long deptId) throws ParseException; ReportRules getReportRules(AtdRules AtdRules); String getRecTime(List> recRecordList,String personId,String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java index fdea829..d97a62a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java @@ -30,6 +30,8 @@ Integer updateRemarksNullById(@Param("id") Integer id); + void initAnnualLeave(); + List> getMaxDate(); List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java index df74a31..c3b0240 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.common.constant.state.Order; import com.casic.missiles.core.common.service.ICommonPersonService; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IAtdPersonService; import org.slf4j.Logger; @@ -40,12 +41,13 @@ } @Override - public List> getPersonListByDeptId(Long deptId){ - List> scopePersons=null; + public List getPersonListByDeptId(Long deptId){ + List scopePersons=null; try { - Page page; - page = new Page(0, Integer.MAX_VALUE); + Page page = new Page<>(0,Integer.MAX_VALUE); page.setOpenSort(false); + page.setCurrent(0); + page.setLimit(Integer.MAX_VALUE); page.setSearchCount(false); EntityWrapper> query = new EntityWrapper<>(); if (ToolUtil.isNotEmpty(deptId + "")) { @@ -53,7 +55,7 @@ } query.andNew().eq(PersonConst.TABLE_DELFLAG, 0); - scopePersons = commonPersonService.selectDataScopePersonMap(page, null, query); + scopePersons = commonPersonService.selectDataScopePerson(page, null, query,null); } catch (Exception e){ logger.error(e.getMessage()); e.printStackTrace(); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java index 4991e34..1b5c1af 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java @@ -6,6 +6,7 @@ import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.dao.ReportMapper; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; import org.slf4j.Logger; @@ -67,7 +68,7 @@ @Override - public void generate(String beginDate, String endDate,Long deptId) throws ParseException { + public int generate(String beginDate, String endDate,Long deptId) throws ParseException { List reportList = new ArrayList<>(); List otReportList = new ArrayList<>(); @@ -84,7 +85,7 @@ AtdRules atdRules = atdRulesService.selectList(null).get(0); if(atdRules == null || ToolUtil.isEmpty(atdRules.getWorkTimeBegin()) || ToolUtil.isEmpty(atdRules.getWorkTimeEnd()) || ToolUtil.isEmpty(atdRules.getBreakTimeBegin()) || ToolUtil.isEmpty(atdRules.getBreakTimeEnd()) ){ - return; + return -1; } ReportRules reportRules = getReportRules(atdRules); LocalTime shangban = reportRules.getShangban(); @@ -101,15 +102,22 @@ try { //分部门生成报表数据 for (Dept dept : deptList) { - List> currentStaffList = new ArrayList<>(); + List currentStaffList = new ArrayList<>(); currentStaffList = atdPersonService.getPersonListByDeptId(dept.getId());// 当前部门的员工名单 + // 滤除设置为不考勤的员工 + for(PersonDto personDto: currentStaffList){ + Map ext = (Map)personDto.getExt(); + if(ext.get("isKaoqin").toString().equals("0")){ + currentStaffList.remove(personDto); + } + } //得到当前部门所有员工的识别记录 List> currentRecordByDept = recRecordService.selectRecordByDeptId(dept.getId()+"", beginDate, endDate); - for (Map mStaff : currentStaffList) { - String currentID = mStaff.get("id").toString(); - String currentName = mStaff.get("name").toString(); + for (PersonDto mStaff : currentStaffList) { + String currentID = mStaff.getId().toString(); + String currentName = mStaff.getName(); for (int i = 0; i < days; i++) { Report mReport = new Report(); OtReport mOtReport = new OtReport(); @@ -188,17 +196,11 @@ //正常出勤 if ((t1.isBefore(shangban) || t1.equals(shangban)) && (t2.isAfter(xiaban) || t2.equals(xiaban))) { - - //将正常出勤数据写入reportList - reportList.add(mReport); - long mm = Duration.between(xiaban, t2).toMinutes(); if (mm >= ot) { mOtReport.setOtMinute(Convert.toStr(mm)); //加班,填写加班信息 otReportList.add(mOtReport); } - - continue; } //有异常情况 @@ -345,21 +347,10 @@ //t1>=17:30 else if (t1.isAfter(xiaban) || t1.equals(xiaban)) { mReport.setAbsentOneDay("√"); - - //判断是否已有相关备注 - List> remarks = remarksService.selectByPersonIdAndDate(currentID, currentDate); - if (remarks.size() > 0) { - for (Map m : remarks) { - if (m.get("remarks_type").toString().trim().equals("5")) { - mReport.setRemarks(m.get("remarks").toString()); - } - } - } } } } //endif(timeArr.Length == 2) - else if (timeArr.length == 1 || timeString.equals(""))//识别记录为空或只有一次识别记录,旷工一天 { if (timeString.equals("")) { @@ -383,7 +374,7 @@ } catch (Exception e) { logger.error("异常 : generate处理数据错误。" + e.getMessage()); -// return false; + return -2; } int oldI=0; @@ -431,8 +422,8 @@ reportService.updateReport(Integer.parseInt(oldReport.get("id").toString()), time2, cdNew, ztNew, kgAmNew, kgPmNew, kgNew, remarksOld); break; } - //用户没有在旧的考勤结果上加备注或者新的考勤结果自动添加了旷工1天备注) - if (remarksOld.equals("")||(remarksNew!=null&&remarksNew.contains("旷工1天"))){ + //用户没有在旧的考勤结果上加备注或者新的考勤结果自动添加了旷工一天备注) + if (remarksOld.equals("")||(remarksNew!=null&&remarksNew.contains("旷工一天"))){ reportService.updateReport(Integer.parseInt(oldReport.get("id").toString()), time2, cdNew, ztNew, kgAmNew, kgPmNew, kgNew, remarksNew); }else{ String staffId = ""; @@ -490,7 +481,7 @@ if (!kgOld.equals(kgNew)) { for (int i = 0; i < remarksArr.length; i++) { - if (!remarksArr[i].contains("旷工1天")) { + if (!remarksArr[i].contains("旷工一天")) { if(remarksArr[i].contains("上午旷工")){ if(kgAmNew.equals("—")){ remarksArr[i]=""; @@ -583,15 +574,15 @@ } catch (Exception ex) { // log.error("异常 : generate存数据库错误。reportCount = " +reportList.size() + ", otReportCount = " +otReportList.size() +"。"+ ex.getMessage()); System.out.println("存入报表数据失败!"); + return -3; // return false; } -// return true; + return 0; } - private List getDeptList(long deptId) - { + private List getDeptList(long deptId) { List deptList = new ArrayList<>(); deptList = commonDeptService.getDeptByTips("");//获取所有部门列表 deptList.remove(0);//去除“顶级”部门 @@ -607,8 +598,7 @@ } @Override - public String getRecTime(List> recRecordList,String personId,String date) - { + public String getRecTime(List> recRecordList,String personId,String date){ DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String recTime=""; for(Map map:recRecordList){ @@ -624,8 +614,7 @@ } @Override - public ReportRules getReportRules(AtdRules AtdRules) - { + public ReportRules getReportRules(AtdRules AtdRules) { ReportRules reportRules = new ReportRules(); try { @@ -723,10 +712,10 @@ if (typeByRecord.equals("5")) { if (exsitType.equals("5")) { if(isEmpty) { - mReport.setRemarks("旷工1天:" + remarksInfo); + mReport.setRemarks("旷工一天:" + remarksInfo); }else { String st = mReport.getRemarks(); - mReport.setRemarks(st + ";旷工1天:" + remarksInfo); + mReport.setRemarks(st + ";旷工一天:" + remarksInfo); } isEmpty = false; } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java index 236dbdd..9ae2d47 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java @@ -108,5 +108,9 @@ return this.baseMapper.updateBreastfeedRemarks(remarks,personId,beginDate,endDate,remarksType); } + @Override + public void initAnnualLeave(){ + this.baseMapper.initAnnualLeave(); + } } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java index cfa238f..083ff0d 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java @@ -21,9 +21,6 @@ */ public class ReportWarpper extends BaseControllerWarpper { -// @Resource -// private IStaffService staffService; - ICommonPermissionService commonPermissionService = SpringContextHolder.getBean(ICommonPermissionService.class); ICommonPersonService commonPersonService = SpringContextHolder.getBean(ICommonPersonService.class); diff --git a/casic-iris-device/pom.xml b/casic-iris-device/pom.xml index b755d76..60207ce 100644 --- a/casic-iris-device/pom.xml +++ b/casic-iris-device/pom.xml @@ -16,20 +16,20 @@ 设备管理 - + com.casic casic-core ${casic.version} + com.casic casic-iris-support ${casic.version} - diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java index d0c9a8f..e0cb1b8 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java @@ -32,6 +32,8 @@ List> getMaxDate(); + void initAnnualLeave(); + List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); Integer deleteAllByDate(@Param("beginDate") String beginDate, @Param("endDate") String endDate); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml index e814ce5..5489553 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml @@ -31,16 +31,17 @@ select a.ID as id,a.PERSON_ID as personId,a.DATETIME as datetime - from recognition_records a,sys_person b + from recognition_records a,sys_person b,bus_device c where - a.PERSON_ID=b.ID + a.PERSON_ID=b.ID and + a.DEV_CODE = C.DEV_CODE AND + LOCATE('2', C.DEV_TYPE)>0 and b.DEPTID = #{deptId} diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml index edb2e01..d9981b4 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml @@ -176,6 +176,11 @@ + + update sys_person_ext set COLUMN_11 = COLUMN_10 + + + delete from report where 1=1 @@ -190,8 +195,8 @@ UPDATE atd_report a, sys_person b set a.REMARKS=(CASE - WHEN REMARKS is null THEN #{remarks} - WHEN REMARKS="" THEN #{remarks} + WHEN a.REMARKS is null THEN #{remarks} + WHEN a.REMARKS="" THEN #{remarks} ELSE CONCAT(a.REMARKS,";",#{remarks}) END) diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java index 8fa7099..2bf131a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.service.IService; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import java.util.List; @@ -18,6 +19,6 @@ void update(Person person); - List> getPersonListByDeptId(Long deptId); + List getPersonListByDeptId(Long deptId); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java index b39ffb6..11d1cd0 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java @@ -21,7 +21,7 @@ */ public interface IGenerateReportService { - void generate(String beginDate,String endDate,Long deptId) throws ParseException; + int generate(String beginDate,String endDate,Long deptId) throws ParseException; ReportRules getReportRules(AtdRules AtdRules); String getRecTime(List> recRecordList,String personId,String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java index fdea829..d97a62a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java @@ -30,6 +30,8 @@ Integer updateRemarksNullById(@Param("id") Integer id); + void initAnnualLeave(); + List> getMaxDate(); List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java index df74a31..c3b0240 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.common.constant.state.Order; import com.casic.missiles.core.common.service.ICommonPersonService; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IAtdPersonService; import org.slf4j.Logger; @@ -40,12 +41,13 @@ } @Override - public List> getPersonListByDeptId(Long deptId){ - List> scopePersons=null; + public List getPersonListByDeptId(Long deptId){ + List scopePersons=null; try { - Page page; - page = new Page(0, Integer.MAX_VALUE); + Page page = new Page<>(0,Integer.MAX_VALUE); page.setOpenSort(false); + page.setCurrent(0); + page.setLimit(Integer.MAX_VALUE); page.setSearchCount(false); EntityWrapper> query = new EntityWrapper<>(); if (ToolUtil.isNotEmpty(deptId + "")) { @@ -53,7 +55,7 @@ } query.andNew().eq(PersonConst.TABLE_DELFLAG, 0); - scopePersons = commonPersonService.selectDataScopePersonMap(page, null, query); + scopePersons = commonPersonService.selectDataScopePerson(page, null, query,null); } catch (Exception e){ logger.error(e.getMessage()); e.printStackTrace(); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java index 4991e34..1b5c1af 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java @@ -6,6 +6,7 @@ import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.dao.ReportMapper; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; import org.slf4j.Logger; @@ -67,7 +68,7 @@ @Override - public void generate(String beginDate, String endDate,Long deptId) throws ParseException { + public int generate(String beginDate, String endDate,Long deptId) throws ParseException { List reportList = new ArrayList<>(); List otReportList = new ArrayList<>(); @@ -84,7 +85,7 @@ AtdRules atdRules = atdRulesService.selectList(null).get(0); if(atdRules == null || ToolUtil.isEmpty(atdRules.getWorkTimeBegin()) || ToolUtil.isEmpty(atdRules.getWorkTimeEnd()) || ToolUtil.isEmpty(atdRules.getBreakTimeBegin()) || ToolUtil.isEmpty(atdRules.getBreakTimeEnd()) ){ - return; + return -1; } ReportRules reportRules = getReportRules(atdRules); LocalTime shangban = reportRules.getShangban(); @@ -101,15 +102,22 @@ try { //分部门生成报表数据 for (Dept dept : deptList) { - List> currentStaffList = new ArrayList<>(); + List currentStaffList = new ArrayList<>(); currentStaffList = atdPersonService.getPersonListByDeptId(dept.getId());// 当前部门的员工名单 + // 滤除设置为不考勤的员工 + for(PersonDto personDto: currentStaffList){ + Map ext = (Map)personDto.getExt(); + if(ext.get("isKaoqin").toString().equals("0")){ + currentStaffList.remove(personDto); + } + } //得到当前部门所有员工的识别记录 List> currentRecordByDept = recRecordService.selectRecordByDeptId(dept.getId()+"", beginDate, endDate); - for (Map mStaff : currentStaffList) { - String currentID = mStaff.get("id").toString(); - String currentName = mStaff.get("name").toString(); + for (PersonDto mStaff : currentStaffList) { + String currentID = mStaff.getId().toString(); + String currentName = mStaff.getName(); for (int i = 0; i < days; i++) { Report mReport = new Report(); OtReport mOtReport = new OtReport(); @@ -188,17 +196,11 @@ //正常出勤 if ((t1.isBefore(shangban) || t1.equals(shangban)) && (t2.isAfter(xiaban) || t2.equals(xiaban))) { - - //将正常出勤数据写入reportList - reportList.add(mReport); - long mm = Duration.between(xiaban, t2).toMinutes(); if (mm >= ot) { mOtReport.setOtMinute(Convert.toStr(mm)); //加班,填写加班信息 otReportList.add(mOtReport); } - - continue; } //有异常情况 @@ -345,21 +347,10 @@ //t1>=17:30 else if (t1.isAfter(xiaban) || t1.equals(xiaban)) { mReport.setAbsentOneDay("√"); - - //判断是否已有相关备注 - List> remarks = remarksService.selectByPersonIdAndDate(currentID, currentDate); - if (remarks.size() > 0) { - for (Map m : remarks) { - if (m.get("remarks_type").toString().trim().equals("5")) { - mReport.setRemarks(m.get("remarks").toString()); - } - } - } } } } //endif(timeArr.Length == 2) - else if (timeArr.length == 1 || timeString.equals(""))//识别记录为空或只有一次识别记录,旷工一天 { if (timeString.equals("")) { @@ -383,7 +374,7 @@ } catch (Exception e) { logger.error("异常 : generate处理数据错误。" + e.getMessage()); -// return false; + return -2; } int oldI=0; @@ -431,8 +422,8 @@ reportService.updateReport(Integer.parseInt(oldReport.get("id").toString()), time2, cdNew, ztNew, kgAmNew, kgPmNew, kgNew, remarksOld); break; } - //用户没有在旧的考勤结果上加备注或者新的考勤结果自动添加了旷工1天备注) - if (remarksOld.equals("")||(remarksNew!=null&&remarksNew.contains("旷工1天"))){ + //用户没有在旧的考勤结果上加备注或者新的考勤结果自动添加了旷工一天备注) + if (remarksOld.equals("")||(remarksNew!=null&&remarksNew.contains("旷工一天"))){ reportService.updateReport(Integer.parseInt(oldReport.get("id").toString()), time2, cdNew, ztNew, kgAmNew, kgPmNew, kgNew, remarksNew); }else{ String staffId = ""; @@ -490,7 +481,7 @@ if (!kgOld.equals(kgNew)) { for (int i = 0; i < remarksArr.length; i++) { - if (!remarksArr[i].contains("旷工1天")) { + if (!remarksArr[i].contains("旷工一天")) { if(remarksArr[i].contains("上午旷工")){ if(kgAmNew.equals("—")){ remarksArr[i]=""; @@ -583,15 +574,15 @@ } catch (Exception ex) { // log.error("异常 : generate存数据库错误。reportCount = " +reportList.size() + ", otReportCount = " +otReportList.size() +"。"+ ex.getMessage()); System.out.println("存入报表数据失败!"); + return -3; // return false; } -// return true; + return 0; } - private List getDeptList(long deptId) - { + private List getDeptList(long deptId) { List deptList = new ArrayList<>(); deptList = commonDeptService.getDeptByTips("");//获取所有部门列表 deptList.remove(0);//去除“顶级”部门 @@ -607,8 +598,7 @@ } @Override - public String getRecTime(List> recRecordList,String personId,String date) - { + public String getRecTime(List> recRecordList,String personId,String date){ DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String recTime=""; for(Map map:recRecordList){ @@ -624,8 +614,7 @@ } @Override - public ReportRules getReportRules(AtdRules AtdRules) - { + public ReportRules getReportRules(AtdRules AtdRules) { ReportRules reportRules = new ReportRules(); try { @@ -723,10 +712,10 @@ if (typeByRecord.equals("5")) { if (exsitType.equals("5")) { if(isEmpty) { - mReport.setRemarks("旷工1天:" + remarksInfo); + mReport.setRemarks("旷工一天:" + remarksInfo); }else { String st = mReport.getRemarks(); - mReport.setRemarks(st + ";旷工1天:" + remarksInfo); + mReport.setRemarks(st + ";旷工一天:" + remarksInfo); } isEmpty = false; } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java index 236dbdd..9ae2d47 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java @@ -108,5 +108,9 @@ return this.baseMapper.updateBreastfeedRemarks(remarks,personId,beginDate,endDate,remarksType); } + @Override + public void initAnnualLeave(){ + this.baseMapper.initAnnualLeave(); + } } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java index cfa238f..083ff0d 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java @@ -21,9 +21,6 @@ */ public class ReportWarpper extends BaseControllerWarpper { -// @Resource -// private IStaffService staffService; - ICommonPermissionService commonPermissionService = SpringContextHolder.getBean(ICommonPermissionService.class); ICommonPersonService commonPersonService = SpringContextHolder.getBean(ICommonPersonService.class); diff --git a/casic-iris-device/pom.xml b/casic-iris-device/pom.xml index b755d76..60207ce 100644 --- a/casic-iris-device/pom.xml +++ b/casic-iris-device/pom.xml @@ -16,20 +16,20 @@ 设备管理 - + com.casic casic-core ${casic.version} + com.casic casic-iris-support ${casic.version} - diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java index 0940c31..bd23c54 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java @@ -43,6 +43,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.SocketTimeoutException; +import java.util.ArrayList; import java.util.List; import java.util.Map; diff --git a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java index b6f1b12..969c2c2 100644 --- a/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java +++ b/casic-iris-acs/src/main/java/com/casic/missiles/modular/system/service/impl/RecognitionRecordsServiceImpl.java @@ -14,6 +14,7 @@ import com.casic.missiles.modular.system.service.IDoorService; import com.casic.missiles.modular.system.service.IRecognitionRecordsService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +//import com.casic.missiles.modular.system.service.IRecordSupportService; import com.casic.missiles.modular.system.service.IRecordSupportService; import com.sun.javafx.collections.MappingChange; import org.apache.commons.lang.StringUtils; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java index d0a9ff1..68f8545 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/MakeReportController.java @@ -11,6 +11,7 @@ import com.casic.missiles.core.shiro.ShiroUser; import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.enums.AtdExportEnum; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; @@ -326,11 +327,11 @@ } }); - List> staffList = new ArrayList<>(); + List staffList = new ArrayList<>(); staffList = atdPersonService.getPersonListByDeptId(mDept.getId());// 当前部门的员工名单 //删除设置为不考勤的员工 - for(Map map: staffList){ - if(!(((Map)map.get("ext")).get("isKaoqin").toString().equals("1"))){ + for(PersonDto map: staffList){ + if(!(((Map)map.getExt()).get("isKaoqin").toString().equals("1"))){ staffList.remove(map); } } @@ -517,8 +518,8 @@ double kghour1 = 3.5; double kghour2 = 4.5; if(!remarksInfo.equals("")){ - if (remarksInfo.contains("旷工1天")) { - if (remarksInfo.contains("旷工1天:出差")||remarksInfo.contains("旷工1天:(公)")) { + if (remarksInfo.contains("旷工一天")) { + if (remarksInfo.contains("旷工一天:出差")||remarksInfo.contains("旷工一天:(公)")) { }else { totalKGHours += 8.0; } @@ -572,35 +573,35 @@ } if (remarksInfo.contains("请假-年假")){ - if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工1天"))nianjia++; + if(mReport.get("absentOneDay").toString().equals("√") && remarksInfo.contains("旷工一天"))nianjia++; else nianjia=nianjia+0.5; } else if (remarksInfo.contains("请假-病假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))bingjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))bingjia++; else bingjia=bingjia+0.5; } else if (remarksInfo.contains("请假-事假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shijia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shijia++; else shijia=shijia+0.5; } else if (remarksInfo.contains("请假-探亲假")) { - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))tanqinjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))tanqinjia++; else tanqinjia=tanqinjia+0.5; } else if (remarksInfo.contains("请假-婚假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))hunjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))hunjia++; else hunjia= hunjia+0.5; } else if (remarksInfo.contains("请假-生育假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))shengyujia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))shengyujia++; else shengyujia= shengyujia+0.5; } else if (remarksInfo.contains("请假-丧假")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))sangjia++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))sangjia++; else sangjia= sangjia+0.5; } else if (remarksInfo.contains("请假-工伤")){ - if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工1天"))gongshang++; + if(mReport.get("absentOneDay").toString().equals("√")&& remarksInfo.contains("旷工一天"))gongshang++; else gongshang= gongshang+0.5; } @@ -651,12 +652,12 @@ //填写原始识别记录汇总表 List> recordList = recRecordService.selectRecordByDeptId(mDept.getId()+"",beginDate,endDate); - for(Map mStaff:staffList) { - String id = mStaff.get("id").toString(); + for(PersonDto mStaff:staffList) { + String id = mStaff.getId().toString(); sheetjlhz.createRow(addjlhz); sheetjlhz.getRow(addjlhz).createCell(0).setCellValue(currentDept); - sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.get("name").toString()); + sheetjlhz.getRow(addjlhz).createCell(1).setCellValue(mStaff.getName()); for(int d = 2;d 1) { - for (int j = 1; j < arr.length; j++) { - s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); - } - } - row.createCell(8).setCellValue(s); +// String s = map.get("remarks").toString(); +// String[] arr = s.split(";"); +// s = arr[0].substring(arr[0].indexOf(":") + 1); +// if (arr.length > 1) { +// for (int j = 1; j < arr.length; j++) { +// s = s + ";" + arr[j].substring(arr[j].indexOf(":") + 1); +// } + +// } + row.createCell(8).setCellValue(map.get("remarks").toString()); } z++; i++; } - }catch (Exception e){ e.printStackTrace(); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java index 75b43da..9d27e57 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/RemarksController.java @@ -18,6 +18,7 @@ import com.casic.missiles.modular.system.service.IAtdPersonService; import com.casic.missiles.modular.system.service.IRemarksService; import com.casic.missiles.modular.system.service.IReportService; +import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -64,41 +65,62 @@ @ResponseBody public Object list(String personId,String date) { //根据personid 和日期查找相关备注 - List> result = remarksService.selectByPersonIdAndDate(personId,date); + List> remarksList = remarksService.selectByPersonIdAndDate(personId,date); Person person = commonPersonService.getPersonById(personId); + // 如果report表相关条目没有哺乳假,则前端列表不显示该条备注 Page> page = new PageFactory>().defaultPage(); - page.setCurrent(1); + page.setCurrent(0); page.setSearchCount(false); page.setSize(Integer.MAX_VALUE); - List> re = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"","true"); - Map mDel = new HashMap<>(); + List> reportList = reportService.searchReportList(page,person.getDeptid()+"",person.getName(),"",date,date,"",""); + Map mDel = new HashMap<>(); // 存储需要删除的哺乳假信息 + Map mDel2 = new HashMap<>(); // 存储需要删除的旷工一天信息 boolean del= true; - for(Map m : result){ - String remarks= m.get("remarks").toString();//已存在的备注类型 - if(remarks.contains("请假-哺乳假")) { - for (Map m2 : re) { - if(m2.get("remarks")!=null) { - if (m2.get("remarks").toString().contains("请假-哺乳假")) { + boolean del2 = true; + for(Map remarks : remarksList){ + String remarksInfo= remarks.get("remarks").toString();//已存在的备注信息 + String remarksType = remarks.get("remarksType").toString();//已存在的备注类型 + if(remarksInfo.contains("请假-哺乳假")) { + for (Map report : reportList) { + if(report.get("remarks")!=null) { + if (report.get("remarks").toString().contains("请假-哺乳假")) { del = false; break; } } } if(del){ - mDel=m; + mDel=remarks; + } + } + if(remarksType.equals("5")) { + for (Map report: reportList) { + if( report.get("remarks")!=null) { + if ( report.get("remarks").toString().contains("旷工一天")) { + del2 = false; + break; + } + } + } + if(del){ + mDel2=remarks; } } } + if(del)remarksList.remove(mDel); + if(del2)remarksList.remove(mDel2); - if(del)result.remove(mDel); - for(Map map : result){ + // 如果report表相关条目没有旷工一天,则前端不显示该条备注 + + for(Map map : remarksList){ String remarksType = map.get("remarksType").toString(); String remarksTypeName = getType(remarksType).replace(":",""); map.put("remarksTypeName",remarksTypeName); } - return ResponseData.success(result); + return ResponseData.success(remarksList); + } /** * 获取备注类型下拉框列表 @@ -166,16 +188,29 @@ } //可以备注的类型,除去已经备注过的类型 - List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); - for(Map m : existTypeList){ - String existType = m.get("remarksType").toString();//已存在的备注类型 - for(Map m2 : result) { - if(m2.containsValue(existType)){ - result.remove(m2); - break; + Map delMap1 = new HashMap<>(); + Map delMap2 = new HashMap<>(); + String remarksExist = report.getRemarks(); + if(remarksExist!=null&&!remarksExist.isEmpty()) { + for (Map m2 : result) { + if(remarksExist.contains(m2.get("name").toString())) { + if (delMap1.isEmpty()) delMap1 = m2; + else delMap2 = m2; } } } + if(!delMap1.isEmpty())result.remove(delMap1); + if(!delMap2.isEmpty())result.remove(delMap2); +// List> existTypeList = remarksService.selectByPersonIdAndDate(personId,date); +// for(Map m : existTypeList){ +// String existType = m.get("remarksType").toString();//已存在的备注类型 +// for(Map m2 : result) { +// if(m2.containsValue(existType)){ +// result.remove(m2); +// break; +// } +// } +// } //因为旷工一天时,可以添加上午旷工或下午旷工,所以需要特别处理 if(isAbsentOneDay && result.size()<3){ @@ -202,6 +237,7 @@ public Object add(RemarksDTO remarksDTO) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + remarksDTO.setRemarks(remarksDTO.getRemarks().replace("& #40;","(").replace("& #41;",")")); if(remarksDTO.getRemarks().contains("哺乳假1")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("6");} else if(remarksDTO.getRemarks().contains("哺乳假2")){remarksDTO.setRemarks("请假-哺乳假");remarksDTO.setRemarksType("7");} @@ -241,7 +277,7 @@ List> absentOneDay = reportService.selectAbsentOneDayByIdAndDate(personId+"",currentDate); if(!absentOneDay.isEmpty()){ if(!absentOneDay.get(0).get("absentOneDay").toString().equals("√")){ - return ResponseData.error("该员工 "+currentDate + " 没有旷工一天!"); + return ResponseData.error(person.getName()+currentDate + "没有旷工!"); } } } @@ -432,7 +468,7 @@ case "2":type="早退:";break; case "3":type="上午旷工:";break; case "4":type="下午旷工:";break; - case "5": type="旷工1天:";break; + case "5": type="旷工一天:";break; case "6": type="晚到减免:";break; case "7": type="早走减免:";break; default:break; diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java index 7797e32..041ba25 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/ReportController.java @@ -120,6 +120,7 @@ case "-1": condition = "zhuanwu";deptid = "";break; case "-2": condition = "leader";deptid = "";break; case "-3":condition = "pingong";deptid = "";break; + } if((month!=null && month!="") && (date==null||date=="")) @@ -171,6 +172,11 @@ } + @GetMapping(value = "/initAnnualLeave") + @ResponseBody + public Object batchExport() { + reportService.initAnnualLeave(); + return ResponseData.success(); + } - -} + } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java deleted file mode 100644 index 9c32c93..0000000 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SynDataNowController.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.missiles.modular.system.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.core.common.service.ICommonPermissionService; -import com.casic.missiles.core.shiro.ShiroUser; -import com.casic.missiles.modular.system.service.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.format.DateTimeFormatter; - -//import org.apache.tomcat.jni.File; - -/** - * 生成报表控制器 - * - * @author fengshuonan - * @Date 2019-03-07 17:31:31 - */ - -@Controller -@RequestMapping("/synDataNow") -public class SynDataNowController extends BaseController { - -// @Value("${path}") -// private String path; - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - - @Autowired - private IReportService reportService; - - @Autowired - private IRecRecordService recRecordService; - - - @Autowired - private ISpecialDayService specialDayService; - - @Autowired - private IOtReportService otReportService; - - @Autowired - private ICommonPermissionService permissionService; - - -// @Value("${time1}") - private String time1; -// @Value("${time2}") - private String time2; -// @Value("${time3}") - private String time3; -// @Value("${time4}") - private String time4; - - public static Connection conn = null; //创建一个用于连接的对象 - PreparedStatement ps = null; //创建一个发送sql语句的对象 - - private Logger log = LoggerFactory.getLogger(this.getClass()); - - - - /** - * 立即同步数据 - */ -// @GetMapping(value = "/generate") - @ResponseBody - @RequestMapping(value = "/syn", method = RequestMethod.POST) - public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { -// SynAndGenerate synAndGenerate=new SynAndGenerate(); - - String resultNet = "以下设备上的记录由于网络不通同步失败:"; - String resultErr = "CatchError:"; - - String dept =""; - ShiroUser shiroUser = permissionService.getCurrLoginUser(); - if(!shiroUser.getRoleNames().contains("超级管理员")) { - dept = shiroUser.getDeptName(); - } - - //同步数据 -// List> deviceList = recDeviceService.list(); -// for (int i = 0; i < deviceList.size(); i++) { -// String ip= deviceList.get(i).get("ip").toString(); -// String port = deviceList.get(i).get("port").toString(); -// String mark = deviceList.get(i).get("mark").toString(); -// int re = synAndGenerate.syn(beginDate,endDate,ip,port,dept); -// if(re == -2){ -// if(resultNet.length()==21)resultNet = resultNet + mark; -// else resultNet = resultNet+", "+mark; -// }else if(re == -1){ -// resultErr = resultErr + mark+"同步失败; "; -// } -// } - - //生成数据 -// if(!synAndGenerate.generate(beginDate,endDate,dept)){ -// resultErr = resultErr + "生成报表数据失败!"; -// } -// -// if(resultNet.length()>21 || resultErr.length()>11 ){ -// String result =""; -// if(resultNet.length()>21)result = result+resultNet; -// if(resultErr.length()>11)result = result+resultErr; -// return ResponseData.error(result); -// } - - - return ResponseData.success(); - } - - -} - diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java new file mode 100644 index 0000000..f18fd4d --- /dev/null +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/controller/SyncController.java @@ -0,0 +1,100 @@ +package com.casic.missiles.modular.system.controller; + + +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.service.ICommonPermissionService; +import com.casic.missiles.core.shiro.ShiroUser; +import com.casic.missiles.modular.system.model.Device; +import com.casic.missiles.modular.system.service.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +//import org.apache.tomcat.jni.File; + +/** + * 生成报表控制器 + * + * @author fengshuonan + * @Date 2019-03-07 17:31:31 + */ + +@Controller +@RequestMapping("/sync") +public class SyncController extends BaseController { + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); + + + @Autowired + private ICommonPermissionService permissionService; + + @Autowired + private IRecordSupportService recordSupportService; + + @Autowired + private IDeviceSupportService deviceSupportService; + + @Autowired + private IGenerateReportService generateReportService; + + + + /** + * 立即同步数据 + */ +// @GetMapping(value = "/generate") + @ResponseBody + @RequestMapping(value = "/syncAndGenerate", method = RequestMethod.POST) + public Object synAndGenetate(String beginDate, String endDate, HttpServletResponse response) throws IOException, SQLException, ParseException { + // 获取识别记录 + List deviceList = deviceSupportService.selectDeviceByType("2"); // 考勤设备列表 + List deviceIdList = new ArrayList<>(); + for(Device device : deviceList){ + deviceIdList.add(device.getId().longValue()); + } + beginDate = beginDate + " 00:00:00"; + endDate = endDate + " 23:59:59"; + List error = recordSupportService.syncRecords(deviceIdList,beginDate,endDate); + + if(!error.isEmpty()){ + return ResponseData.error("获取识别记录失败"); + } + + // 生成报表数据 + Long deptId = new Long((long)-1); + ShiroUser shiroUser = permissionService.getCurrLoginUser(); + if(!shiroUser.getRoleNames().contains("超级管理员")) { + deptId = shiroUser.getDeptId(); + } + + int resultErr = generateReportService.generate(beginDate,endDate,deptId); + if(resultErr == -1){ + return ResponseData.error("生成报表数据失败,请先设置考勤规则"); + } else if(resultErr == -2){ + return ResponseData.error("生成报表数据失败"); + } + + return ResponseData.success(); + } + + +} + diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java index d0c9a8f..e0cb1b8 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/ReportMapper.java @@ -32,6 +32,8 @@ List> getMaxDate(); + void initAnnualLeave(); + List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); Integer deleteAllByDate(@Param("beginDate") String beginDate, @Param("endDate") String endDate); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml index e814ce5..5489553 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/OtReportMapper.xml @@ -31,16 +31,17 @@ select a.ID as id,a.PERSON_ID as personId,a.DATETIME as datetime - from recognition_records a,sys_person b + from recognition_records a,sys_person b,bus_device c where - a.PERSON_ID=b.ID + a.PERSON_ID=b.ID and + a.DEV_CODE = C.DEV_CODE AND + LOCATE('2', C.DEV_TYPE)>0 and b.DEPTID = #{deptId} diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml index edb2e01..d9981b4 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/dao/mapping/ReportMapper.xml @@ -176,6 +176,11 @@ + + update sys_person_ext set COLUMN_11 = COLUMN_10 + + + delete from report where 1=1 @@ -190,8 +195,8 @@ UPDATE atd_report a, sys_person b set a.REMARKS=(CASE - WHEN REMARKS is null THEN #{remarks} - WHEN REMARKS="" THEN #{remarks} + WHEN a.REMARKS is null THEN #{remarks} + WHEN a.REMARKS="" THEN #{remarks} ELSE CONCAT(a.REMARKS,";",#{remarks}) END) diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java index 8fa7099..2bf131a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IAtdPersonService.java @@ -1,6 +1,7 @@ package com.casic.missiles.modular.system.service; import com.baomidou.mybatisplus.service.IService; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import java.util.List; @@ -18,6 +19,6 @@ void update(Person person); - List> getPersonListByDeptId(Long deptId); + List getPersonListByDeptId(Long deptId); } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java index b39ffb6..11d1cd0 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IGenerateReportService.java @@ -21,7 +21,7 @@ */ public interface IGenerateReportService { - void generate(String beginDate,String endDate,Long deptId) throws ParseException; + int generate(String beginDate,String endDate,Long deptId) throws ParseException; ReportRules getReportRules(AtdRules AtdRules); String getRecTime(List> recRecordList,String personId,String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java index fdea829..d97a62a 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/IReportService.java @@ -30,6 +30,8 @@ Integer updateRemarksNullById(@Param("id") Integer id); + void initAnnualLeave(); + List> getMaxDate(); List> selectAbsentOneDayByIdAndDate(@Param("personId") String personId, @Param("date") String date); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java index df74a31..c3b0240 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/AtdPersonServiceImpl.java @@ -7,6 +7,7 @@ import com.casic.missiles.core.common.constant.state.Order; import com.casic.missiles.core.common.service.ICommonPersonService; import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.Person; import com.casic.missiles.modular.system.service.IAtdPersonService; import org.slf4j.Logger; @@ -40,12 +41,13 @@ } @Override - public List> getPersonListByDeptId(Long deptId){ - List> scopePersons=null; + public List getPersonListByDeptId(Long deptId){ + List scopePersons=null; try { - Page page; - page = new Page(0, Integer.MAX_VALUE); + Page page = new Page<>(0,Integer.MAX_VALUE); page.setOpenSort(false); + page.setCurrent(0); + page.setLimit(Integer.MAX_VALUE); page.setSearchCount(false); EntityWrapper> query = new EntityWrapper<>(); if (ToolUtil.isNotEmpty(deptId + "")) { @@ -53,7 +55,7 @@ } query.andNew().eq(PersonConst.TABLE_DELFLAG, 0); - scopePersons = commonPersonService.selectDataScopePersonMap(page, null, query); + scopePersons = commonPersonService.selectDataScopePerson(page, null, query,null); } catch (Exception e){ logger.error(e.getMessage()); e.printStackTrace(); diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java index 4991e34..1b5c1af 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/GenerateReportServiceImpl.java @@ -6,6 +6,7 @@ import com.casic.missiles.core.util.Convert; import com.casic.missiles.core.util.ToolUtil; import com.casic.missiles.modular.system.dao.ReportMapper; +import com.casic.missiles.modular.system.dto.PersonDto; import com.casic.missiles.modular.system.model.*; import com.casic.missiles.modular.system.service.*; import org.slf4j.Logger; @@ -67,7 +68,7 @@ @Override - public void generate(String beginDate, String endDate,Long deptId) throws ParseException { + public int generate(String beginDate, String endDate,Long deptId) throws ParseException { List reportList = new ArrayList<>(); List otReportList = new ArrayList<>(); @@ -84,7 +85,7 @@ AtdRules atdRules = atdRulesService.selectList(null).get(0); if(atdRules == null || ToolUtil.isEmpty(atdRules.getWorkTimeBegin()) || ToolUtil.isEmpty(atdRules.getWorkTimeEnd()) || ToolUtil.isEmpty(atdRules.getBreakTimeBegin()) || ToolUtil.isEmpty(atdRules.getBreakTimeEnd()) ){ - return; + return -1; } ReportRules reportRules = getReportRules(atdRules); LocalTime shangban = reportRules.getShangban(); @@ -101,15 +102,22 @@ try { //分部门生成报表数据 for (Dept dept : deptList) { - List> currentStaffList = new ArrayList<>(); + List currentStaffList = new ArrayList<>(); currentStaffList = atdPersonService.getPersonListByDeptId(dept.getId());// 当前部门的员工名单 + // 滤除设置为不考勤的员工 + for(PersonDto personDto: currentStaffList){ + Map ext = (Map)personDto.getExt(); + if(ext.get("isKaoqin").toString().equals("0")){ + currentStaffList.remove(personDto); + } + } //得到当前部门所有员工的识别记录 List> currentRecordByDept = recRecordService.selectRecordByDeptId(dept.getId()+"", beginDate, endDate); - for (Map mStaff : currentStaffList) { - String currentID = mStaff.get("id").toString(); - String currentName = mStaff.get("name").toString(); + for (PersonDto mStaff : currentStaffList) { + String currentID = mStaff.getId().toString(); + String currentName = mStaff.getName(); for (int i = 0; i < days; i++) { Report mReport = new Report(); OtReport mOtReport = new OtReport(); @@ -188,17 +196,11 @@ //正常出勤 if ((t1.isBefore(shangban) || t1.equals(shangban)) && (t2.isAfter(xiaban) || t2.equals(xiaban))) { - - //将正常出勤数据写入reportList - reportList.add(mReport); - long mm = Duration.between(xiaban, t2).toMinutes(); if (mm >= ot) { mOtReport.setOtMinute(Convert.toStr(mm)); //加班,填写加班信息 otReportList.add(mOtReport); } - - continue; } //有异常情况 @@ -345,21 +347,10 @@ //t1>=17:30 else if (t1.isAfter(xiaban) || t1.equals(xiaban)) { mReport.setAbsentOneDay("√"); - - //判断是否已有相关备注 - List> remarks = remarksService.selectByPersonIdAndDate(currentID, currentDate); - if (remarks.size() > 0) { - for (Map m : remarks) { - if (m.get("remarks_type").toString().trim().equals("5")) { - mReport.setRemarks(m.get("remarks").toString()); - } - } - } } } } //endif(timeArr.Length == 2) - else if (timeArr.length == 1 || timeString.equals(""))//识别记录为空或只有一次识别记录,旷工一天 { if (timeString.equals("")) { @@ -383,7 +374,7 @@ } catch (Exception e) { logger.error("异常 : generate处理数据错误。" + e.getMessage()); -// return false; + return -2; } int oldI=0; @@ -431,8 +422,8 @@ reportService.updateReport(Integer.parseInt(oldReport.get("id").toString()), time2, cdNew, ztNew, kgAmNew, kgPmNew, kgNew, remarksOld); break; } - //用户没有在旧的考勤结果上加备注或者新的考勤结果自动添加了旷工1天备注) - if (remarksOld.equals("")||(remarksNew!=null&&remarksNew.contains("旷工1天"))){ + //用户没有在旧的考勤结果上加备注或者新的考勤结果自动添加了旷工一天备注) + if (remarksOld.equals("")||(remarksNew!=null&&remarksNew.contains("旷工一天"))){ reportService.updateReport(Integer.parseInt(oldReport.get("id").toString()), time2, cdNew, ztNew, kgAmNew, kgPmNew, kgNew, remarksNew); }else{ String staffId = ""; @@ -490,7 +481,7 @@ if (!kgOld.equals(kgNew)) { for (int i = 0; i < remarksArr.length; i++) { - if (!remarksArr[i].contains("旷工1天")) { + if (!remarksArr[i].contains("旷工一天")) { if(remarksArr[i].contains("上午旷工")){ if(kgAmNew.equals("—")){ remarksArr[i]=""; @@ -583,15 +574,15 @@ } catch (Exception ex) { // log.error("异常 : generate存数据库错误。reportCount = " +reportList.size() + ", otReportCount = " +otReportList.size() +"。"+ ex.getMessage()); System.out.println("存入报表数据失败!"); + return -3; // return false; } -// return true; + return 0; } - private List getDeptList(long deptId) - { + private List getDeptList(long deptId) { List deptList = new ArrayList<>(); deptList = commonDeptService.getDeptByTips("");//获取所有部门列表 deptList.remove(0);//去除“顶级”部门 @@ -607,8 +598,7 @@ } @Override - public String getRecTime(List> recRecordList,String personId,String date) - { + public String getRecTime(List> recRecordList,String personId,String date){ DateTimeFormatter fomatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String recTime=""; for(Map map:recRecordList){ @@ -624,8 +614,7 @@ } @Override - public ReportRules getReportRules(AtdRules AtdRules) - { + public ReportRules getReportRules(AtdRules AtdRules) { ReportRules reportRules = new ReportRules(); try { @@ -723,10 +712,10 @@ if (typeByRecord.equals("5")) { if (exsitType.equals("5")) { if(isEmpty) { - mReport.setRemarks("旷工1天:" + remarksInfo); + mReport.setRemarks("旷工一天:" + remarksInfo); }else { String st = mReport.getRemarks(); - mReport.setRemarks(st + ";旷工1天:" + remarksInfo); + mReport.setRemarks(st + ";旷工一天:" + remarksInfo); } isEmpty = false; } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java index 236dbdd..9ae2d47 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/service/impl/ReportServiceImpl.java @@ -108,5 +108,9 @@ return this.baseMapper.updateBreastfeedRemarks(remarks,personId,beginDate,endDate,remarksType); } + @Override + public void initAnnualLeave(){ + this.baseMapper.initAnnualLeave(); + } } diff --git a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java index cfa238f..083ff0d 100644 --- a/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java +++ b/casic-iris-atd/src/main/java/com/casic/missiles/modular/system/warpper/ReportWarpper.java @@ -21,9 +21,6 @@ */ public class ReportWarpper extends BaseControllerWarpper { -// @Resource -// private IStaffService staffService; - ICommonPermissionService commonPermissionService = SpringContextHolder.getBean(ICommonPermissionService.class); ICommonPersonService commonPersonService = SpringContextHolder.getBean(ICommonPersonService.class); diff --git a/casic-iris-device/pom.xml b/casic-iris-device/pom.xml index b755d76..60207ce 100644 --- a/casic-iris-device/pom.xml +++ b/casic-iris-device/pom.xml @@ -16,20 +16,20 @@ 设备管理 - + com.casic casic-core ${casic.version} + com.casic casic-iris-support ${casic.version} - diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java index 0940c31..bd23c54 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisPersonController.java @@ -43,6 +43,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.SocketTimeoutException; +import java.util.ArrayList; import java.util.List; import java.util.Map; diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java index 1a411ca..ac8ed33 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/service/impl/IrisPersonServiceImpl.java @@ -152,7 +152,6 @@ @Override public ResponseData personImport(List list, Object... args) throws Exception{ List results = new ArrayList<>(); - List personList = new ArrayList<>(); List deptList = commonDeptService.getDeptByTips(null); Person person = new Person(); //处理人员信息