| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682 |
- package cn.com.lzt.attendancetemp.service.impl;
- import cn.com.lzt.arrangeduty.entity.ArrangeDutyEntity;
- import cn.com.lzt.arrangeduty.service.ArrangeDutyServiceI;
- import cn.com.lzt.attendancetemp.dao.AttendanceTempDao;
- import cn.com.lzt.attendancetemp.entity.AttendanceTempEntity;
- import cn.com.lzt.attendancetemp.service.AttendanceTempServiceI;
- import cn.com.lzt.attendancetemp.service.AttendanceTempTransactionalServiceI;
- import cn.com.lzt.attendancewarnmsg.dao.AttendanceWarnMsgMinidao;
- import cn.com.lzt.attendancewarnmsg.dto.AttendanceWarnMsgDto;
- import cn.com.lzt.attendancewarnmsg.dto.ProjectAbnormalDetailDto;
- import cn.com.lzt.attendancewarnmsg.entity.AttendanceWarnMsgEntity;
- import cn.com.lzt.attendancewarnmsg.service.AttendanceWarnMsgServiceI;
- import cn.com.lzt.attendancewarnmsgdetail.entity.AttendanceWarnMsgDetailEntity;
- import cn.com.lzt.calendar.entity.CalendarEntity;
- import cn.com.lzt.calendar.service.CalendarServiceI;
- import cn.com.lzt.common.push.JPushProcessor;
- import cn.com.lzt.dingattendanceinfo.entity.DingAttendanceinfoEntity;
- import cn.com.lzt.dingattendanceinfo.service.DingAttendanceinfoServiceI;
- import cn.com.lzt.holiday.entity.HolidayEntity;
- import cn.com.lzt.overtimerecord.entity.OvertimeRecordEntity;
- import cn.com.lzt.personnelbasearchivesmanage.entity.PersonnelBaseArchivesManageEntity;
- import cn.com.lzt.personnelbasearchivesmanage.service.PersonnelBaseArchivesManageServiceI;
- import cn.com.lzt.projarrangedetail.entity.ProjarrangeDetailEntity;
- import cn.com.lzt.projarrangedetail.service.ProjarrangeDetailServiceI;
- import cn.com.lzt.userarrangedetail.entity.UserArrangeDetailEntity;
- import cn.com.lzt.userarrangedetail.service.UserArrangeDetailServiceI;
- import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
- import org.jeecgframework.core.common.service.CommonService;
- import org.jeecgframework.core.constant.Globals;
- import org.jeecgframework.core.util.DataUtils;
- import org.jeecgframework.core.util.ListUtils;
- import org.jeecgframework.core.util.StringUtil;
- import org.jeecgframework.core.util.oConvertUtils;
- import org.jeecgframework.tag.vo.datatable.SortDirection;
- import org.jeecgframework.web.system.pojo.base.TSDepart;
- import org.jeecgframework.web.system.pojo.base.TSUser;
- import org.jeecgframework.web.system.pojo.base.TSUserOrg;
- import org.jeecgframework.web.system.service.DepartServiceI;
- import org.jeecgframework.web.system.service.SystemService;
- import org.jeecgframework.web.system.service.UserService;
- import org.jeecgframework.workflow.common.WorkFlowGlobals;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Propagation;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- @Service("AttendanceTempTransactionalServiceI")
- @Transactional(propagation = Propagation.REQUIRES_NEW)
- public class AttendanceTempTransactionalServiceImpl implements AttendanceTempTransactionalServiceI {
-
- @Autowired
- private UserService userService;
-
- @Autowired
- private DingAttendanceinfoServiceI dingAttendanceinfoService;
-
- @Autowired
- private SystemService systemService;
-
- @Autowired
- private CalendarServiceI calendarService;
-
- @Autowired
- private AttendanceTempServiceI attendanceTempService;
-
- @Autowired
- private ProjarrangeDetailServiceI projarrangeDetailService;
-
- @Autowired
- private UserArrangeDetailServiceI userArrangeDetailService;
-
- @Autowired
- private ArrangeDutyServiceI arrangeDutyService;
-
- @Autowired
- private PersonnelBaseArchivesManageServiceI personnelBaseArchivesManageService;
-
- @Autowired
- private DepartServiceI departService;
-
- @Autowired
- private AttendanceWarnMsgServiceI attendanceWarnMsgService;
-
- @Autowired
- private CommonService commonService;
-
- @Autowired
- AttendanceWarnMsgMinidao attendanceWarnMsgMinidao;
-
- @Autowired
- private JPushProcessor pushProcessor;
-
- @Resource
- AttendanceTempDao attendanceTempDao;
-
- /**
- * 根据用户将每天的实时查看数据初始化
- *
- */
- @SuppressWarnings("deprecation")
- @Override
- public void attendanceTempInit(Date date) {
- // 检索所有用户
- String userHql = "from TSUser where deleteFlag <> 1";
- List<TSUser> userList = userService.findHql(userHql);
- SimpleDateFormat dfYMD = new SimpleDateFormat("yyyy-MM-dd");
- //String nowDateString = df.format(new Date()) + " 00:00:00";
- // 获取当前日期
- Date nowDate = new Date();
- if(null != date) {
- nowDate = date;
- }
-
- String nowDateString = dfYMD.format(nowDate);
-
- try {
- nowDate = dfYMD.parse(nowDateString);
- } catch (ParseException e1) {
- e1.printStackTrace();
- }
-
- Map<String, PersonnelBaseArchivesManageEntity> map_userid2Personnel = new HashMap<>();
- String personnelByUserIdHql = "from PersonnelBaseArchivesManageEntity where POSITION_STATUS = '1' or POSITION_STATUS = '2'";
- List<PersonnelBaseArchivesManageEntity> personnelBaseArchivesManageEntitys = personnelBaseArchivesManageService.findHql(personnelByUserIdHql);
-
- for(PersonnelBaseArchivesManageEntity p : personnelBaseArchivesManageEntitys) {
- map_userid2Personnel.put(p.getUserid(), p);
- }
-
- String attendanceTempByUserIdAndDateHql = "from AttendanceTempEntity where attendanceDate = ?";
- List<AttendanceTempEntity> attendanceTempEntitys = attendanceTempService.findHql(attendanceTempByUserIdAndDateHql, nowDate);
- Map<String, AttendanceTempEntity> map_user2AttendanceTemp = new HashMap<>();
- for(AttendanceTempEntity tempentity : attendanceTempEntitys) {
- map_user2AttendanceTemp.put(tempentity.getUserId(), tempentity);
- }
-
- for(TSUser tsBaseUser : userList) {
- if(!map_userid2Personnel.containsKey(tsBaseUser.getId())) {
- continue;
- }
- PersonnelBaseArchivesManageEntity personnelBaseArchivesManageEntity = map_userid2Personnel.get(tsBaseUser.getId());
-
- // 如果员工未离职
- if(Globals.JOBSTATUS_1.equals(personnelBaseArchivesManageEntity.getPositionStatus()) || Globals.JOBSTATUS_2.equals(personnelBaseArchivesManageEntity.getPositionStatus())) {
- // 如果用户没有当天的实时查看信息,则新建一条
- if(!map_user2AttendanceTemp.containsKey(tsBaseUser.getId())) {
-
- AttendanceTempEntity attendanceTempEntity = new AttendanceTempEntity();
- // 员工ID
- attendanceTempEntity.setUserId(tsBaseUser.getId());
- // 员工编号
- attendanceTempEntity.setUserCode(tsBaseUser.getUserNum());
- // 员工姓名
- attendanceTempEntity.setRealname(tsBaseUser.getRealName());
-
- // 查询所属单位
- StringBuilder mainOrgSql = new StringBuilder();
- mainOrgSql.append(" SELECT ");
- mainOrgSql.append(" depart.id id");
- mainOrgSql.append(" FROM t_s_user_org userOrg ");
- mainOrgSql.append(" LEFT JOIN t_s_depart depart ON userOrg.org_id = depart.id ");
- mainOrgSql.append(" WHERE ");
- mainOrgSql.append(" userOrg.user_id = '" + tsBaseUser.getId() + "'");
- mainOrgSql.append(" AND userOrg.status = '0' ");
- mainOrgSql.append(" AND userOrg.ifpluralism <> '1' ");
- List<Map<String, Object>> mainOrgMapList = systemService.findForJdbc(mainOrgSql.toString());
- // 所属单位ID
- attendanceTempEntity.setBelongUnitid((String)mainOrgMapList.get(0).get("id"));
- // 考勤日期
- attendanceTempEntity.setAttendanceDate(nowDate);
- // 一线员工
- if(Globals.MANAGETYPE_2.equals(personnelBaseArchivesManageEntity.getManagerType())) {
- // 获取班次信息
- Map<String, Object> arrangeDutyEntityMap = this.getArrangeDutyInfo(nowDate, tsBaseUser.getId());
- String returnFlg = (String)arrangeDutyEntityMap.get("returnFlg");
- if("1".equals(returnFlg)) {
- ArrangeDutyEntity arrangeDutyEntity = (ArrangeDutyEntity)arrangeDutyEntityMap.get("arrangeDutyEntity");
- attendanceTempEntity.setArrangeDutyId(arrangeDutyEntity.getId());
-
- // 班次类型为夜班
- int year = Integer.valueOf(nowDateString.substring(0,4));
- int month = Integer.valueOf(nowDateString.substring(5,7));
- int day = Integer.valueOf(nowDateString.substring(8,10));
- if(Globals.DUTYTYPE_yeban115.equals(arrangeDutyEntity.getDutyType())) {
- // 基准时间计算
- String normalworkStime = arrangeDutyEntity.getNormalworkStime();
- String normalworkEtime = arrangeDutyEntity.getNormalworkEtime();
- if(StringUtil.isNotEmpty(normalworkStime) && StringUtil.isNotEmpty(normalworkEtime)) {
- Date datumStime = new Date(year - 1900, month - 1, day, Integer.valueOf(normalworkStime.substring(0, 2)), Integer.valueOf(normalworkStime.substring(3, 5)), 0);
- Date datumEtimeTemp = new Date(year - 1900, month - 1, day, Integer.valueOf(normalworkEtime.substring(0, 2)), Integer.valueOf(normalworkEtime.substring(3, 5)), 0);
- Date datumEtime = new Date(datumEtimeTemp.getTime() + 1000 * 60 * 60 * 24);
- // 设置基准时间
- attendanceTempEntity.setDatumStime(datumStime);
- attendanceTempEntity.setDatumEtime(datumEtime);
- }
- } else {
- // 基准时间计算
- String normalworkStime = arrangeDutyEntity.getNormalworkStime();
- String normalworkEtime = arrangeDutyEntity.getNormalworkEtime();
- if(StringUtil.isNotEmpty(normalworkStime) && StringUtil.isNotEmpty(normalworkEtime)) {
- Date datumStime = new Date(year - 1900, month - 1, day, Integer.valueOf(normalworkStime.substring(0, 2)), Integer.valueOf(normalworkStime.substring(3, 5)), 0);
- Date datumEtime = new Date(year - 1900, month - 1, day, Integer.valueOf(normalworkEtime.substring(0, 2)), Integer.valueOf(normalworkEtime.substring(3, 5)), 0);
-
- // 设置基准时间
- attendanceTempEntity.setDatumStime(datumStime);
- attendanceTempEntity.setDatumEtime(datumEtime);
- }
- }
- } else {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_6);
- }
- } else {
- // 一线员工以外
- int year = Integer.valueOf(nowDateString.substring(0,4));
- int month = Integer.valueOf(nowDateString.substring(5,7));
- int day = Integer.valueOf(nowDateString.substring(8,10));
-
- String calendarHql = "from CalendarEntity where year =? and month =? and day = ?";
- List<CalendarEntity> calendarList = calendarService.findHql(calendarHql, year, month, day);
- if(Globals.dtype_0.equals(calendarList.get(0).getDtype())) {
- Date datumStime = new Date(year - 1900, month - 1, day, 8, 30, 0);
- Date datumEtime = new Date(year - 1900, month - 1, day, 17, 0, 0);
- // 设置基准时间
- attendanceTempEntity.setDatumStime(datumStime);
- attendanceTempEntity.setDatumEtime(datumEtime);
- } else {
- ;
- }
- }
-
- // 是否请假
- // List<HolidayEntity> holidayEntityList = attendanceTempDao.getHolidayEntityList(tsBaseUser.getId(), nowDateString, WorkFlowGlobals.BPM_BUS_STATUS_3);
- // if(holidayEntityList.size() > 0) {
- // String attendanceStatus = attendanceTempEntity.getAttendanceStatus();
- // if(StringUtil.isEmpty(attendanceStatus)) {
- // attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_4);
- // } else {
- // attendanceTempEntity.setAttendanceStatus(attendanceStatus + "," + Globals.ATTENDANCE_STATUS_4);
- // }
- // }
- try{
- attendanceTempService.save(attendanceTempEntity);
- String message = "员工ID:" + attendanceTempEntity.getUserCode() + "实时查看基础数据添加成功";
- //systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
- }catch(Exception e){
- e.printStackTrace();
- String message = "员工ID:" + attendanceTempEntity.getUserCode() + "实时查看基础数据添加失败";
- //systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
- }
- }
- }
- }
- }
-
- /**
- * 处理钉钉考勤原始记录表中的数据到考勤实时查看表
- *
- */
- @Override
- public boolean attendanceTempSynchronization(Date date) {
- boolean returnFlg = true;
- // 根据原始记录表中未处理的信息对实时查看表进行编辑
- String dingAttendanceInfoHql = "from DingAttendanceinfoEntity where isDispose <> 1";
- List<DingAttendanceinfoEntity> dingAttendanceinfoEntityList = null;
- if(date != null) {
- //手动刷新
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Date dateYesterday = new Date(date.getTime() - 1000 * 60 * 60 * 24);
- Date dateTomorrow = new Date(date.getTime() + 2000 * 60 * 60 * 24); //between field2 是小于不等于
-
- CriteriaQuery cq = new CriteriaQuery(DingAttendanceinfoEntity.class);
- try {
- cq.between("attendanceTime",sdf.parse(sdf.format(dateYesterday)),sdf.parse(sdf.format(dateTomorrow)));
- } catch (ParseException e) {
- org.jeecgframework.core.util.LogUtil.error(e.getMessage());
- e.printStackTrace();
- }
- // cq.add();
- // cq.eq("userId", "ff808081645a0c470164682d4a4a0488");
- cq.add();
- cq.addOrder("attendanceTime", SortDirection.desc);
- dingAttendanceinfoEntityList = systemService.getListByCriteriaQuery(cq, false);
- }else {
- dingAttendanceinfoEntityList = dingAttendanceinfoService.findHql(dingAttendanceInfoHql);
- }
- //String dingAttendanceInfoHql = "from DingAttendanceinfoEntity where userId='000000006120dd1c01612cf521d40173' order by attendanceDate desc"; //测试
-
- for (DingAttendanceinfoEntity dingAttendanceinfoEntity : dingAttendanceinfoEntityList) {
- String personnelByUserIdHql = "from PersonnelBaseArchivesManageEntity where userid = ?";
- List<PersonnelBaseArchivesManageEntity> personnelBaseArchivesManageEntityList = personnelBaseArchivesManageService.findHql(personnelByUserIdHql, dingAttendanceinfoEntity.getUserId());
- if(personnelBaseArchivesManageEntityList.size() == 0) {
- continue;
- }
- PersonnelBaseArchivesManageEntity personnelBaseArchivesManageEntity = personnelBaseArchivesManageEntityList.get(0);
- // 如果员工未离职
- if(Globals.JOBSTATUS_1.equals(personnelBaseArchivesManageEntity.getPositionStatus()) || Globals.JOBSTATUS_2.equals(personnelBaseArchivesManageEntity.getPositionStatus())) {
- // 一线员工
- if(Globals.MANAGETYPE_2.equals(personnelBaseArchivesManageEntity.getManagerType())) {
- // if("000000006120dd1c01612cf521d40173".equals(personnelBaseArchivesManageEntity.getUserid())) {
- // System.out.println("gllp");
- // }
- // ----------值夜班情况处理 ---20180308---yangxi---add---start----------
- // 获取前一天的日期
- Date dateYesterday = new Date(dingAttendanceinfoEntity.getAttendanceDate().getTime() - 1000 * 60 * 60 * 24);
- // 获取班次信息
- Map<String, Object> arrangeDutyEntityMapYesterday = this.getArrangeDutyInfo(dateYesterday, dingAttendanceinfoEntity.getUserId());
- String arrangeDutyEntityMapYesterdayFlg = (String)arrangeDutyEntityMapYesterday.get("returnFlg");
- if("1".equals(arrangeDutyEntityMapYesterdayFlg)) {
- ArrangeDutyEntity arrangeDutyEntityYesterday = (ArrangeDutyEntity)arrangeDutyEntityMapYesterday.get("arrangeDutyEntity");
- if (Globals.DUTYTYPE_zhiban.equals(arrangeDutyEntityYesterday.getDutyType())) {
- String ondutyStime = arrangeDutyEntityYesterday.getOndutyStime();
- String ondutyEtime = arrangeDutyEntityYesterday.getOndutyEtime();
- if(ondutyStime.compareTo(ondutyEtime) > 0) {
- String attendanceTempByUserIdAndDateHql = "from AttendanceTempEntity where userId =? and attendanceDate = ?";
- List<AttendanceTempEntity> attendanceTempEntityList = attendanceTempService.findHql(attendanceTempByUserIdAndDateHql, dingAttendanceinfoEntity.getUserId(), dateYesterday);
-
- if(attendanceTempEntityList.size() > 0) {
- AttendanceTempEntity attendanceTempEntity = attendanceTempEntityList.get(0);
- attendanceTempEntity = this.SetAttendanceStatus(attendanceTempEntity, attendanceTempEntityList, Globals.MANAGETYPE_2);
- // 所有签到时间List
- List<String> attendanceAllDatetimeList = new ArrayList<String>();
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String tempStr = dateFormat.format(dingAttendanceinfoEntity.getAttendanceTime());
- attendanceAllDatetimeList.add(tempStr.substring(0, 16));
-
- if(null != attendanceTempEntity.getAlldatetime()) {
- String tempStr3 = attendanceTempEntity.getAlldatetime();
- List<String> alldatetimeList = Arrays.asList(tempStr3.split(","));
- for(String alldatetime : alldatetimeList) {
- attendanceAllDatetimeList.add(alldatetime);
- }
- }
-
- // 所有签到时间去重排序
- HashSet<String> allDatetimeHashSet = new HashSet<String>(attendanceAllDatetimeList);
- attendanceAllDatetimeList.clear();
- attendanceAllDatetimeList.addAll(allDatetimeHashSet);
- Collections.sort(attendanceAllDatetimeList);
-
- try {
- // 计算签到时间和最新打卡时间
- Calendar yesterdayCalendar = Calendar.getInstance();
- Calendar todayCalendar = Calendar.getInstance();
- yesterdayCalendar.setTime(dateYesterday);
- todayCalendar.setTime(dingAttendanceinfoEntity.getAttendanceDate());
-
- String[] ondutyStimeTemp = ondutyStime.split(":");
- String[] ondutyEtimeTemp = ondutyStime.split(":");
-
- yesterdayCalendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(ondutyStimeTemp[0]));
- yesterdayCalendar.set(Calendar.MINUTE, Integer.valueOf(ondutyStimeTemp[1]));
-
- todayCalendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(ondutyEtimeTemp[0]));
- todayCalendar.set(Calendar.MINUTE, Integer.valueOf(ondutyEtimeTemp[1]));
-
- String startStr = dateFormat.format(yesterdayCalendar.getTime());
- String endStr = dateFormat.format(todayCalendar.getTime());
-
- List<String> attendanceTimeList = new ArrayList<String>();
- for (int i = 0; i < attendanceAllDatetimeList.size(); i++) {
- if(startStr.compareTo(attendanceAllDatetimeList.get(i) + ":00") <= 0 && endStr.compareTo(attendanceAllDatetimeList.get(i) + ":00") >= 0) {
- attendanceTimeList.add(attendanceAllDatetimeList.get(i));
- }
- }
- // 设置签到时间和最新打卡时间
- attendanceTempEntity = this.getZhibanTime(arrangeDutyEntityYesterday, dingAttendanceinfoEntity, attendanceAllDatetimeList, attendanceTempEntity, true);
-
- String attendanceAllDatetimeStr = "";
- for(String str : attendanceAllDatetimeList) {
- attendanceAllDatetimeStr += str + ",";
- }
- if(StringUtil.isNotEmpty(attendanceAllDatetimeStr)) {
- attendanceAllDatetimeStr = attendanceAllDatetimeStr.substring(0,attendanceAllDatetimeStr.length() - 1);
- }
- attendanceTempEntity.setAlldatetime(attendanceAllDatetimeStr);
- attendanceTempService.saveOrUpdate(attendanceTempEntity);
- } catch (Exception e) {
- e.printStackTrace();
- returnFlg = false;
- }
- } else {
- // ======为了容错的代码,正常情况下跑定时任务,每天的基本信息都会自动生成的,不会出现前一天的实时查看数据没有的情况====== START
- AttendanceTempEntity attendanceTempEntity = new AttendanceTempEntity();
- // String userHql = "from TSBaseUser where id = ?";
- // List<TSBaseUser> userList = userService.findHql(userHql, dingAttendanceinfoEntity.getUserId());
- // TSBaseUser tsBaseUser = userList.get(0);
- TSUser tsBaseUser = userService.get(TSUser.class, dingAttendanceinfoEntity.getUserId());
- // 员工ID
- attendanceTempEntity.setUserId(tsBaseUser.getId());
- // 员工编号
- attendanceTempEntity.setUserCode(tsBaseUser.getUserNum());
- // 员工姓名
- attendanceTempEntity.setRealname(tsBaseUser.getRealName());
-
- // 查询所属单位
- StringBuilder mainOrgSql = new StringBuilder();
- mainOrgSql.append(" SELECT ");
- mainOrgSql.append(" depart.id id");
- mainOrgSql.append(" FROM t_s_user_org userOrg ");
- mainOrgSql.append(" LEFT JOIN t_s_depart depart ON userOrg.org_id = depart.id ");
- mainOrgSql.append(" WHERE ");
- mainOrgSql.append(" userOrg.user_id = '" + tsBaseUser.getId() + "'");
- mainOrgSql.append(" AND userOrg.status = '0' ");
- mainOrgSql.append(" AND userOrg.ifpluralism <> '1' ");
- List<Map<String, Object>> mainOrgMapList = systemService.findForJdbc(mainOrgSql.toString());
- // 所属单位ID
- attendanceTempEntity.setBelongUnitid((String)mainOrgMapList.get(0).get("id"));
- // 考勤日期
- attendanceTempEntity.setAttendanceDate(dateYesterday);
- SimpleDateFormat dfYMD = new SimpleDateFormat("yyyy-MM-dd");
-
- String nowDateString = dfYMD.format(dateYesterday);
- // 获取班次信息
- Map<String, Object> arrangeDutyEntityMapTemp1 = this.getArrangeDutyInfo(dateYesterday, tsBaseUser.getId());
- String arrangeDutyEntityMapTemp1Flg = (String)arrangeDutyEntityMapTemp1.get("returnFlg");
-
- if("1".equals(arrangeDutyEntityMapTemp1Flg)) {
- ArrangeDutyEntity arrangeDutyEntity1 = (ArrangeDutyEntity)arrangeDutyEntityMapTemp1.get("arrangeDutyEntity");
- attendanceTempEntity.setArrangeDutyId(arrangeDutyEntity1.getId());
-
- int year = Integer.valueOf(nowDateString.substring(0,4));
- int month = Integer.valueOf(nowDateString.substring(5,7));
- int day = Integer.valueOf(nowDateString.substring(8,10));
-
- // 基准时间计算
- String normalworkStime = arrangeDutyEntity1.getNormalworkStime();
- String normalworkEtime = arrangeDutyEntity1.getNormalworkEtime();
- if(StringUtil.isNotEmpty(normalworkStime) && StringUtil.isNotEmpty(normalworkEtime)) {
- Date datumStime = new Date(year - 1900, month - 1, day, Integer.valueOf(normalworkStime.substring(0, 2)), Integer.valueOf(normalworkStime.substring(3, 5)), 0);
- Date datumEtimeTemp = new Date(year - 1900, month - 1, day, Integer.valueOf(normalworkEtime.substring(0, 2)), Integer.valueOf(normalworkEtime.substring(3, 5)), 0);
- Date datumEtime = new Date(datumEtimeTemp.getTime() + 1000 * 60 * 60 * 24);
- // 设置基准时间
- attendanceTempEntity.setDatumStime(datumStime);
- attendanceTempEntity.setDatumEtime(datumEtime);
- }
- // 所有签到时间List
- List<String> attendanceAllDatetimeList = new ArrayList<String>();
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String tempStr = dateFormat.format(dingAttendanceinfoEntity.getAttendanceTime());
- attendanceAllDatetimeList.add(tempStr.substring(0, 16));
-
- try {
- // 计算签到时间和最新打卡时间
- Calendar yesterdayCalendar = Calendar.getInstance();
- Calendar todayCalendar = Calendar.getInstance();
- yesterdayCalendar.setTime(dateYesterday);
- todayCalendar.setTime(dingAttendanceinfoEntity.getAttendanceDate());
-
- String[] ondutyStimeTemp = ondutyStime.split(":");
- String[] ondutyEtimeTemp = ondutyStime.split(":");
-
- yesterdayCalendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(ondutyStimeTemp[0]));
- yesterdayCalendar.set(Calendar.MINUTE, Integer.valueOf(ondutyStimeTemp[1]));
-
- todayCalendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(ondutyEtimeTemp[0]));
- todayCalendar.set(Calendar.MINUTE, Integer.valueOf(ondutyEtimeTemp[1]));
-
- String startStr = dateFormat.format(yesterdayCalendar.getTime());
- String endStr = dateFormat.format(todayCalendar.getTime());
-
- List<String> attendanceTimeList = new ArrayList<String>();
- for (int i = 0; i < attendanceAllDatetimeList.size(); i++) {
- if(startStr.compareTo(attendanceAllDatetimeList.get(i) + ":00") <= 0 && endStr.compareTo(attendanceAllDatetimeList.get(i) + ":00") >= 0) {
- attendanceTimeList.add(attendanceAllDatetimeList.get(i));
- }
- }
-
- // 设置签到时间和最新打卡时间
- attendanceTempEntity = this.getZhibanTime(arrangeDutyEntityYesterday, dingAttendanceinfoEntity, attendanceAllDatetimeList, attendanceTempEntity, true);
-
- String attendanceAllDatetimeStr = "";
- for(String str : attendanceAllDatetimeList) {
- attendanceAllDatetimeStr += str + ",";
- }
- if(StringUtil.isNotEmpty(attendanceAllDatetimeStr)) {
- attendanceAllDatetimeStr = attendanceAllDatetimeStr.substring(0,attendanceAllDatetimeStr.length() - 1);
- }
- attendanceTempEntity.setAlldatetime(attendanceAllDatetimeStr);
- attendanceTempService.saveOrUpdate(attendanceTempEntity);
- } catch (Exception e) {
- e.printStackTrace();
- returnFlg = false;
- }
- // 所有签到时间去重排序
- HashSet<String> allDatetimeHashSet = new HashSet<String>(attendanceAllDatetimeList);
- attendanceAllDatetimeList.clear();
- attendanceAllDatetimeList.addAll(allDatetimeHashSet);
- Collections.sort(attendanceAllDatetimeList);
- String attendanceAllDatetimeStr = "";
- for(String str : attendanceAllDatetimeList) {
- attendanceAllDatetimeStr += str + ",";
- }
- if(StringUtil.isNotEmpty(attendanceAllDatetimeStr)) {
- attendanceAllDatetimeStr = attendanceAllDatetimeStr.substring(0,attendanceAllDatetimeStr.length() - 1);
- }
- attendanceTempEntity.setAlldatetime(attendanceAllDatetimeStr);
- } else {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_6);
- }
-
- try {
- attendanceTempService.save(attendanceTempEntity);
- } catch (Exception e) {
- returnFlg = false;
- e.printStackTrace();
- }
- // ======为了容错的代码,正常情况下跑定时任务,每天的基本信息都会自动生成的,不会出现前一天的实时查看数据没有的情况====== END
- }
- }
- }
- }
- // ----------值夜班情况处理 ---20180308---yangxi---add---end-----------
-
- // 获取班次信息
- Map<String, Object> arrangeDutyEntityMap = this.getArrangeDutyInfo(dingAttendanceinfoEntity.getAttendanceDate(), dingAttendanceinfoEntity.getUserId());
- String arrangeDutyFlg = (String)arrangeDutyEntityMap.get("returnFlg");
- if("1".equals(arrangeDutyFlg)) {
- ArrangeDutyEntity arrangeDutyEntity = (ArrangeDutyEntity)arrangeDutyEntityMap.get("arrangeDutyEntity");
- // 班次类型为休息时,判断休息前一天是不是夜班
- if (Globals.DUTYTYPE_xiuxi.equals(arrangeDutyEntity.getDutyType())) {
- // 获取前一天的日期
- Date dateTempDate = new Date(dingAttendanceinfoEntity.getAttendanceDate().getTime() - 1000 * 60 * 60 * 24);
- // 获取班次信息
- Map<String, Object> arrangeDutyEntityMapTemp = this.getArrangeDutyInfo(dateTempDate, dingAttendanceinfoEntity.getUserId());
- String arrangeDutyEntityMapTempFlg = (String)arrangeDutyEntityMapTemp.get("returnFlg");
- if("1".equals(arrangeDutyEntityMapTempFlg)) {
- ArrangeDutyEntity arrangeDutyEntityTemp = (ArrangeDutyEntity)arrangeDutyEntityMapTemp.get("arrangeDutyEntity");
- if (Globals.DUTYTYPE_yeban115.equals(arrangeDutyEntityTemp.getDutyType())) {
- String attendanceTempByUserIdAndDateHql = "from AttendanceTempEntity where userId =? and attendanceDate = ?";
- List<AttendanceTempEntity> attendanceTempEntityList = attendanceTempService.findHql(attendanceTempByUserIdAndDateHql, dingAttendanceinfoEntity.getUserId(), dateTempDate);
-
- if(attendanceTempEntityList.size() > 0) {
- AttendanceTempEntity attendanceTempEntity = attendanceTempEntityList.get(0);
-
- // 计算签到时间,最新打卡时间
- List<String> attendanceTimeList = new ArrayList<String>();
- // 所有签到时间List
- List<String> attendanceAllDatetimeList = new ArrayList<String>();
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String tempStr = dateFormat.format(dingAttendanceinfoEntity.getAttendanceTime());
- attendanceTimeList.add(tempStr.substring(0, 16));
- attendanceAllDatetimeList.add(tempStr.substring(0, 16));
-
- if (null != attendanceTempEntity.getSignDate()) {
- String tempStr1 = dateFormat.format(attendanceTempEntity.getSignDate());
- attendanceTimeList.add(tempStr1.substring(0, 16));
- }
-
- if (null != attendanceTempEntity.getNewestPunchcardDate()) {
- String tempStr2 = dateFormat.format(attendanceTempEntity.getNewestPunchcardDate());
- attendanceTimeList.add(tempStr2.substring(0, 16));
- }
-
- if(null != attendanceTempEntity.getAlldatetime()) {
- String tempStr3 = attendanceTempEntity.getAlldatetime();
- List<String> alldatetimeList = Arrays.asList(tempStr3.split(","));
- for(String alldatetime : alldatetimeList) {
- attendanceAllDatetimeList.add(alldatetime);
- }
- }
- // 签到时间及最新打卡时间去重排序
- HashSet<String> hashSet = new HashSet<String>(attendanceTimeList);
- attendanceTimeList.clear();
- attendanceTimeList.addAll(hashSet);
- Collections.sort(attendanceTimeList);
-
- // 所有签到时间去重排序
- HashSet<String> allDatetimeHashSet = new HashSet<String>(attendanceAllDatetimeList);
- attendanceAllDatetimeList.clear();
- attendanceAllDatetimeList.addAll(allDatetimeHashSet);
- Collections.sort(attendanceAllDatetimeList);
-
- try {
- String attendanceAllDatetimeStr = "";
- for(String str : attendanceAllDatetimeList) {
- attendanceAllDatetimeStr += str + ",";
- }
- if(StringUtil.isNotEmpty(attendanceAllDatetimeStr)) {
- attendanceAllDatetimeStr = attendanceAllDatetimeStr.substring(0,attendanceAllDatetimeStr.length() - 1);
- }
- attendanceTempEntity.setAlldatetime(attendanceAllDatetimeStr);
-
- if (attendanceTimeList.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- }
- if (attendanceTimeList.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeList.get(attendanceTimeList.size() - 1) + ":00"));
- }
- attendanceTempService.saveOrUpdate(attendanceTempEntity);
- } catch (ParseException e) {
- e.printStackTrace();
- returnFlg = false;
- } catch (Exception e) {
- e.printStackTrace();
- returnFlg = false;
- }
- } else {
- // ======为了容错的代码,正常情况下跑定时任务,每天的基本信息都会自动生成的,不会出现前一天的实时查看数据没有的情况====== START
- AttendanceTempEntity attendanceTempEntity = new AttendanceTempEntity();
- // String userHql = "from TSBaseUser where id = ?";
- // List<TSBaseUser> userList = userService.findHql(userHql, dingAttendanceinfoEntity.getUserId());
- // TSBaseUser tsBaseUser = userList.get(0);
- TSUser tsBaseUser = userService.get(TSUser.class, dingAttendanceinfoEntity.getUserId());
- // 员工ID
- attendanceTempEntity.setUserId(tsBaseUser.getId());
- // 员工编号
- attendanceTempEntity.setUserCode(tsBaseUser.getUserNum());
- // 员工姓名
- attendanceTempEntity.setRealname(tsBaseUser.getRealName());
-
- // 查询所属单位
- StringBuilder mainOrgSql = new StringBuilder();
- mainOrgSql.append(" SELECT ");
- mainOrgSql.append(" depart.id id");
- mainOrgSql.append(" FROM t_s_user_org userOrg ");
- mainOrgSql.append(" LEFT JOIN t_s_depart depart ON userOrg.org_id = depart.id ");
- mainOrgSql.append(" WHERE ");
- mainOrgSql.append(" userOrg.user_id = '" + tsBaseUser.getId() + "'");
- mainOrgSql.append(" AND userOrg.status = '0' ");
- mainOrgSql.append(" AND userOrg.ifpluralism <> '1' ");
- List<Map<String, Object>> mainOrgMapList = systemService.findForJdbc(mainOrgSql.toString());
- // 所属单位ID
- attendanceTempEntity.setBelongUnitid((String)mainOrgMapList.get(0).get("id"));
- // 考勤日期
- attendanceTempEntity.setAttendanceDate(dateTempDate);
- SimpleDateFormat dfYMD = new SimpleDateFormat("yyyy-MM-dd");
-
- String nowDateString = dfYMD.format(dateTempDate);
- // 获取班次信息
- Map<String, Object> arrangeDutyEntityMapTemp1 = this.getArrangeDutyInfo(dateTempDate, tsBaseUser.getId());
- String arrangeDutyEntityMapTemp1Flg = (String)arrangeDutyEntityMapTemp1.get("returnFlg");
-
- if("1".equals(arrangeDutyEntityMapTemp1Flg)) {
- ArrangeDutyEntity arrangeDutyEntity1 = (ArrangeDutyEntity)arrangeDutyEntityMapTemp1.get("arrangeDutyEntity");
- attendanceTempEntity.setArrangeDutyId(arrangeDutyEntity1.getId());
-
- int year = Integer.valueOf(nowDateString.substring(0,4));
- int month = Integer.valueOf(nowDateString.substring(5,7));
- int day = Integer.valueOf(nowDateString.substring(8,10));
-
- // 基准时间计算
- String normalworkStime = arrangeDutyEntity1.getNormalworkStime();
- String normalworkEtime = arrangeDutyEntity1.getNormalworkEtime();
-
- if(StringUtil.isNotEmpty(normalworkStime) && StringUtil.isNotEmpty(normalworkEtime)) {
- Date datumStime = new Date(year - 1900, month - 1, day, Integer.valueOf(normalworkStime.substring(0, 2)), Integer.valueOf(normalworkStime.substring(3, 5)), 0);
- Date datumEtimeTemp = new Date(year - 1900, month - 1, day, Integer.valueOf(normalworkEtime.substring(0, 2)), Integer.valueOf(normalworkEtime.substring(3, 5)), 0);
- Date datumEtime = new Date(datumEtimeTemp.getTime() + 1000 * 60 * 60 * 24);
- // 设置基准时间
- attendanceTempEntity.setDatumStime(datumStime);
- attendanceTempEntity.setDatumEtime(datumEtime);
- }
-
- // 计算签到时间,最新打卡时间
- List<String> attendanceTimeList = new ArrayList<String>();
- // 所有签到时间List
- List<String> attendanceAllDatetimeList = new ArrayList<String>();
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String tempStr = dateFormat.format(dingAttendanceinfoEntity.getAttendanceTime());
- attendanceTimeList.add(tempStr.substring(0, 16));
- attendanceAllDatetimeList.add(tempStr.substring(0, 16));
- // 签到时间及最新打卡时间去重排序
- HashSet<String> h = new HashSet<String>(attendanceTimeList);
- attendanceTimeList.clear();
- attendanceTimeList.addAll(h);
- Collections.sort(attendanceTimeList);
-
- // 所有签到时间去重排序
- HashSet<String> allDatetimeHashSet = new HashSet<String>(attendanceAllDatetimeList);
- attendanceAllDatetimeList.clear();
- attendanceAllDatetimeList.addAll(allDatetimeHashSet);
- Collections.sort(attendanceAllDatetimeList);
-
- try {
- if (attendanceTimeList.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- }
- if (attendanceTimeList.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeList.get(attendanceTimeList.size() - 1) + ":00"));
- }
-
- String attendanceAllDatetimeStr = "";
- for(String str : attendanceAllDatetimeList) {
- attendanceAllDatetimeStr += str + ",";
- }
- if(StringUtil.isNotEmpty(attendanceAllDatetimeStr)) {
- attendanceAllDatetimeStr = attendanceAllDatetimeStr.substring(0,attendanceAllDatetimeStr.length() - 1);
- }
- attendanceTempEntity.setAlldatetime(attendanceAllDatetimeStr);
- } catch (ParseException e) {
- e.printStackTrace();
- returnFlg = false;
- }
- } else {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_6);
- }
-
- try {
- attendanceTempService.save(attendanceTempEntity);
- } catch (Exception e) {
- returnFlg = false;
- e.printStackTrace();
- }
- // ======为了容错的代码,正常情况下跑定时任务,每天的基本信息都会自动生成的,不会出现前一天的实时查看数据没有的情况====== END
- }
- }
- } else {
- // 前一天未排班
- ;
- }
- } else {
- // 当天不是休息
- ;
- }
- } else {
- // 当天未排班
- ;
- }
- }
-
- // 处理本日的数据
- String attendanceTempByUserIdAndDateHql = "from AttendanceTempEntity where userId =? and attendanceDate = ?";
- List<AttendanceTempEntity> attendanceTempEntityList = attendanceTempService.findHql(attendanceTempByUserIdAndDateHql, dingAttendanceinfoEntity.getUserId(), dingAttendanceinfoEntity.getAttendanceDate());
-
- AttendanceTempEntity attendanceTempEntity = new AttendanceTempEntity();
-
- if(attendanceTempEntityList.size() > 0) {
- attendanceTempEntity = attendanceTempEntityList.get(0);
-
- // 计算签到时间,最新打卡时间
- List<String> attendanceTimeList = new ArrayList<String>();
- // 所有签到时间List
- List<String> attendanceAllDatetimeList = new ArrayList<String>();
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String tempStr = dateFormat.format(dingAttendanceinfoEntity.getAttendanceTime());
- attendanceTimeList.add(tempStr.substring(0, 16));
- attendanceAllDatetimeList.add(tempStr.substring(0, 16));
- if (null != attendanceTempEntity.getSignDate()) {
- String tempStr1 = dateFormat.format(attendanceTempEntity.getSignDate());
- attendanceTimeList.add(tempStr1.substring(0, 16));
- }
- if (null != attendanceTempEntity.getNewestPunchcardDate()) {
- String tempStr2 = dateFormat.format(attendanceTempEntity.getNewestPunchcardDate());
- attendanceTimeList.add(tempStr2.substring(0, 16));
- }
-
- if(null != attendanceTempEntity.getAlldatetime()) {
- String tempStr3 = attendanceTempEntity.getAlldatetime();
- List<String> alldatetimeList = Arrays.asList(tempStr3.split(","));
- for(String alldatetime : alldatetimeList) {
- attendanceAllDatetimeList.add(alldatetime);
- }
- }
- HashSet<String> h = new HashSet<String>(attendanceTimeList);
- attendanceTimeList.clear();
- attendanceTimeList.addAll(h);
- Collections.sort(attendanceTimeList);
-
- // 所有签到时间去重排序
- HashSet<String> allDatetimeHashSet = new HashSet<String>(attendanceAllDatetimeList);
- attendanceAllDatetimeList.clear();
- attendanceAllDatetimeList.addAll(allDatetimeHashSet);
- Collections.sort(attendanceAllDatetimeList);
-
- try {
- // 一线员工
- if(Globals.MANAGETYPE_2.equals(personnelBaseArchivesManageEntity.getManagerType())) {
- // 获取班次信息
- Map<String, Object> arrangeDutyEntityMap = this.getArrangeDutyInfo(dingAttendanceinfoEntity.getAttendanceDate(), dingAttendanceinfoEntity.getUserId());
- String arrangeDutyFlg = (String)arrangeDutyEntityMap.get("returnFlg");
- if("1".equals(arrangeDutyFlg)) {
- ArrangeDutyEntity arrangeDutyEntity = (ArrangeDutyEntity)arrangeDutyEntityMap.get("arrangeDutyEntity");
- // 班次类型为休息时,判断休息前一天是不是夜班
- if (Globals.DUTYTYPE_xiuxi.equals(arrangeDutyEntity.getDutyType())) {
- // 获取前一天的日期
- Date dateTempDate = new Date(dingAttendanceinfoEntity.getAttendanceDate().getTime() - 1000 * 60 * 60 * 24);
- // 获取班次信息
- Map<String, Object> arrangeDutyEntityMapTemp = this.getArrangeDutyInfo(dateTempDate, dingAttendanceinfoEntity.getUserId());
- String arrangeDutyEntityMapTempFlg = (String)arrangeDutyEntityMapTemp.get("returnFlg");
- if("1".equals(arrangeDutyEntityMapTempFlg)) {
- ArrangeDutyEntity arrangeDutyEntityTemp = (ArrangeDutyEntity)arrangeDutyEntityMapTemp.get("arrangeDutyEntity");
- if (Globals.DUTYTYPE_yeban115.equals(arrangeDutyEntityTemp.getDutyType())) {
- ;
- } else {
- if (Globals.DUTYTYPE_zhiban.equals(arrangeDutyEntity.getDutyType())) {
- attendanceTempEntity = this.getZhibanTime(arrangeDutyEntity, dingAttendanceinfoEntity, attendanceAllDatetimeList, attendanceTempEntity, false);
- } else {
- if (attendanceTimeList.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- }
- if (attendanceTimeList.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeList.get(attendanceTimeList.size() - 1) + ":00"));
- }
- }
- }
- } else {
- if (Globals.DUTYTYPE_zhiban.equals(arrangeDutyEntity.getDutyType())) {
- attendanceTempEntity = this.getZhibanTime(arrangeDutyEntity, dingAttendanceinfoEntity, attendanceAllDatetimeList, attendanceTempEntity, false);
- } else {
- if (attendanceTimeList.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- }
- if (attendanceTimeList.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeList.get(attendanceTimeList.size() - 1) + ":00"));
- }
- }
- }
- } else {
- if (Globals.DUTYTYPE_zhiban.equals(arrangeDutyEntity.getDutyType())) {
- attendanceTempEntity = this.getZhibanTime(arrangeDutyEntity, dingAttendanceinfoEntity, attendanceAllDatetimeList, attendanceTempEntity, false);
- } else {
- if (attendanceTimeList.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- }
- if (attendanceTimeList.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeList.get(attendanceTimeList.size() - 1) + ":00"));
- }
- }
- }
- } else {
- if (attendanceTimeList.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- }
- if (attendanceTimeList.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeList.get(attendanceTimeList.size() - 1) + ":00"));
- }
- }
- } else {
- if (attendanceTimeList.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- }
- if (attendanceTimeList.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeList.get(attendanceTimeList.size() - 1) + ":00"));
- }
- }
-
- String attendanceAllDatetimeStr = "";
- for(String str : attendanceAllDatetimeList) {
- attendanceAllDatetimeStr += str + ",";
- }
- if(StringUtil.isNotEmpty(attendanceAllDatetimeStr)) {
- attendanceAllDatetimeStr = attendanceAllDatetimeStr.substring(0,attendanceAllDatetimeStr.length() - 1);
- }
- attendanceTempEntity.setAlldatetime(attendanceAllDatetimeStr);
- attendanceTempService.saveOrUpdate(attendanceTempEntity);
- } catch (ParseException e) {
- e.printStackTrace();
- returnFlg = false;
- } catch (Exception e) {
- e.printStackTrace();
- returnFlg = false;
- }
- } else {
- // String userHql = "from TSBaseUser where id = ?";
- // List<TSBaseUser> userList = userService.findHql(userHql, dingAttendanceinfoEntity.getUserId());
- // TSBaseUser tsBaseUser = userList.get(0);
- TSUser user = userService.get(TSUser.class, dingAttendanceinfoEntity.getUserId());
- // 员工ID
- attendanceTempEntity.setUserId(user.getId());
- // 员工编号
- attendanceTempEntity.setUserCode(user.getUserNum());
- // 员工姓名
- attendanceTempEntity.setRealname(user.getRealName());
-
- // 查询所属单位
- StringBuilder mainOrgSql = new StringBuilder();
- mainOrgSql.append(" SELECT ");
- mainOrgSql.append(" depart.id id");
- mainOrgSql.append(" FROM t_s_user_org userOrg ");
- mainOrgSql.append(" LEFT JOIN t_s_depart depart ON userOrg.org_id = depart.id ");
- mainOrgSql.append(" WHERE ");
- mainOrgSql.append(" userOrg.user_id = '" + user.getId() + "'");
- mainOrgSql.append(" AND userOrg.status = '0' ");
- mainOrgSql.append(" AND userOrg.ifpluralism <> '1' ");
- List<Map<String, Object>> mainOrgMapList = systemService.findForJdbc(mainOrgSql.toString());
- // 所属单位ID
- attendanceTempEntity.setBelongUnitid((String)mainOrgMapList.get(0).get("id"));
- // 考勤日期
- attendanceTempEntity.setAttendanceDate(dingAttendanceinfoEntity.getAttendanceDate());
- SimpleDateFormat dfYMD = new SimpleDateFormat("yyyy-MM-dd");
-
- String nowDateString = dfYMD.format(dingAttendanceinfoEntity.getAttendanceDate());
- // 一线员工
- if(Globals.MANAGETYPE_2.equals(personnelBaseArchivesManageEntity.getManagerType())) {
- // 获取班次信息
- Map<String, Object> arrangeDutyEntityMap = this.getArrangeDutyInfo(dingAttendanceinfoEntity.getAttendanceDate(), user.getId());
- String arrangeDutyEntityFlg = (String)arrangeDutyEntityMap.get("returnFlg");
- if("1".equals(arrangeDutyEntityFlg)) {
- ArrangeDutyEntity arrangeDutyEntity = (ArrangeDutyEntity)arrangeDutyEntityMap.get("arrangeDutyEntity");
- attendanceTempEntity.setArrangeDutyId(arrangeDutyEntity.getId());
-
- // 班次类型为夜班
- int year = Integer.valueOf(nowDateString.substring(0,4));
- int month = Integer.valueOf(nowDateString.substring(5,7));
- int day = Integer.valueOf(nowDateString.substring(8,10));
- if(Globals.DUTYTYPE_yeban115.equals(arrangeDutyEntity.getDutyType())) {
- // 基准时间计算
- String normalworkStime = arrangeDutyEntity.getNormalworkStime();
- String normalworkEtime = arrangeDutyEntity.getNormalworkEtime();
- if(StringUtil.isNotEmpty(normalworkStime) && StringUtil.isNotEmpty(normalworkEtime)) {
- Date datumStime = new Date(year - 1900, month - 1, day, Integer.valueOf(normalworkStime.substring(0, 2)), Integer.valueOf(normalworkStime.substring(3, 5)), 0);
- Date datumEtimeTemp = new Date(year - 1900, month - 1, day, Integer.valueOf(normalworkEtime.substring(0, 2)), Integer.valueOf(normalworkEtime.substring(3, 5)), 0);
- Date datumEtime = new Date(datumEtimeTemp.getTime() + 1000 * 60 * 60 * 24);
- // 设置基准时间
- attendanceTempEntity.setDatumStime(datumStime);
- attendanceTempEntity.setDatumEtime(datumEtime);
- }
- } else {
- // 基准时间计算
- String normalworkStime = arrangeDutyEntity.getNormalworkStime();
- String normalworkEtime = arrangeDutyEntity.getNormalworkEtime();
- if(StringUtil.isNotEmpty(normalworkStime) && StringUtil.isNotEmpty(normalworkEtime)) {
- Date datumStime = new Date(year - 1900, month - 1, day, Integer.valueOf(normalworkStime.substring(0, 2)), Integer.valueOf(normalworkStime.substring(3, 5)), 0);
- Date datumEtime = new Date(year - 1900, month - 1, day, Integer.valueOf(normalworkEtime.substring(0, 2)), Integer.valueOf(normalworkEtime.substring(3, 5)), 0);
-
- // 设置基准时间
- attendanceTempEntity.setDatumStime(datumStime);
- attendanceTempEntity.setDatumEtime(datumEtime);
- }
- }
- } else {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_6);
- }
- } else {
- // 一线员工以外
- int year = Integer.valueOf(nowDateString.substring(0,4));
- int month = Integer.valueOf(nowDateString.substring(5,7));
- int day = Integer.valueOf(nowDateString.substring(8,10));
-
- String calendarHql = "from CalendarEntity where year =? and month =? and day = ?";
- List<CalendarEntity> calendarList = calendarService.findHql(calendarHql, year, month, day);
- if(Globals.dtype_0.equals(calendarList.get(0).getDtype())) {
- Date datumStime = new Date(year - 1900, month - 1, day, 8, 30, 0);
- Date datumEtime = new Date(year - 1900, month - 1, day, 17, 0, 0);
- // 设置基准时间
- attendanceTempEntity.setDatumStime(datumStime);
- attendanceTempEntity.setDatumEtime(datumEtime);
- } else {
- ;
- }
- }
-
- // 计算签到时间,最新打卡时间
- List<String> attendanceTimeList = new ArrayList<String>();
- // 所有签到时间List
- List<String> attendanceAllDatetimeList = new ArrayList<String>();
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String tempStr = dateFormat.format(dingAttendanceinfoEntity.getAttendanceTime());
- attendanceTimeList.add(tempStr.substring(0, 16));
- attendanceAllDatetimeList.add(tempStr.substring(0, 16));
-
- if (null != attendanceTempEntity.getSignDate()) {
- String tempStr1 = dateFormat.format(attendanceTempEntity.getSignDate());
- attendanceTimeList.add(tempStr1.substring(0, 16));
- }
- if (null != attendanceTempEntity.getNewestPunchcardDate()) {
- String tempStr2 = dateFormat.format(attendanceTempEntity.getNewestPunchcardDate());
- attendanceTimeList.add(tempStr2.substring(0, 16));
- }
-
- if(null != attendanceTempEntity.getAlldatetime()) {
- String tempStr3 = attendanceTempEntity.getAlldatetime();
- List<String> alldatetimeList = Arrays.asList(tempStr3.split(","));
- for(String alldatetime : alldatetimeList) {
- attendanceAllDatetimeList.add(alldatetime);
- }
- }
- HashSet<String> h = new HashSet<String>(attendanceTimeList);
- attendanceTimeList.clear();
- attendanceTimeList.addAll(h);
- Collections.sort(attendanceTimeList);
-
- // 所有签到时间去重排序
- HashSet<String> allDatetimeHashSet = new HashSet<String>(attendanceAllDatetimeList);
- attendanceAllDatetimeList.clear();
- attendanceAllDatetimeList.addAll(allDatetimeHashSet);
- Collections.sort(attendanceAllDatetimeList);
-
- try {
- // 一线员工
- if(Globals.MANAGETYPE_2.equals(personnelBaseArchivesManageEntity.getManagerType())) {
- // 获取班次信息
- Map<String, Object> arrangeDutyEntityMap = this.getArrangeDutyInfo(dingAttendanceinfoEntity.getAttendanceDate(), dingAttendanceinfoEntity.getUserId());
- String arrangeDutyFlg = (String)arrangeDutyEntityMap.get("returnFlg");
- if("1".equals(arrangeDutyFlg)) {
- ArrangeDutyEntity arrangeDutyEntity = (ArrangeDutyEntity)arrangeDutyEntityMap.get("arrangeDutyEntity");
- // 班次类型为休息时,判断休息前一天是不是夜班
- if (Globals.DUTYTYPE_xiuxi.equals(arrangeDutyEntity.getDutyType())) {
- // 获取前一天的日期
- Date dateTempDate = new Date(dingAttendanceinfoEntity.getAttendanceDate().getTime() - 1000 * 60 * 60 * 24);
- // 获取班次信息
- Map<String, Object> arrangeDutyEntityMapTemp = this.getArrangeDutyInfo(dateTempDate, dingAttendanceinfoEntity.getUserId());
- String arrangeDutyEntityMapTempFlg = (String)arrangeDutyEntityMapTemp.get("returnFlg");
- if("1".equals(arrangeDutyEntityMapTempFlg)) {
- ArrangeDutyEntity arrangeDutyEntityTemp = (ArrangeDutyEntity)arrangeDutyEntityMapTemp.get("arrangeDutyEntity");
- if (Globals.DUTYTYPE_yeban115.equals(arrangeDutyEntityTemp.getDutyType())) {
- ;
- } else {
- if (Globals.DUTYTYPE_zhiban.equals(arrangeDutyEntity.getDutyType())) {
- attendanceTempEntity = this.getZhibanTime(arrangeDutyEntity, dingAttendanceinfoEntity, attendanceAllDatetimeList, attendanceTempEntity, false);
- } else {
- if (attendanceTimeList.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- }
- if (attendanceTimeList.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeList.get(attendanceTimeList.size() - 1) + ":00"));
- }
- }
- }
- } else {
- if (Globals.DUTYTYPE_zhiban.equals(arrangeDutyEntity.getDutyType())) {
- attendanceTempEntity = this.getZhibanTime(arrangeDutyEntity, dingAttendanceinfoEntity, attendanceAllDatetimeList, attendanceTempEntity, false);
- } else {
- if (attendanceTimeList.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- }
- if (attendanceTimeList.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeList.get(attendanceTimeList.size() - 1) + ":00"));
- }
- }
- }
- } else {
- if (Globals.DUTYTYPE_zhiban.equals(arrangeDutyEntity.getDutyType())) {
- attendanceTempEntity = this.getZhibanTime(arrangeDutyEntity, dingAttendanceinfoEntity, attendanceAllDatetimeList, attendanceTempEntity, false);
- } else {
- if (attendanceTimeList.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- }
- if (attendanceTimeList.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeList.get(attendanceTimeList.size() - 1) + ":00"));
- }
- }
- }
- } else {
- if (attendanceTimeList.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- }
- if (attendanceTimeList.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeList.get(attendanceTimeList.size() - 1) + ":00"));
- }
- }
- } else {
- if (attendanceTimeList.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- }
- if (attendanceTimeList.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeList.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeList.get(attendanceTimeList.size() - 1) + ":00"));
- }
- }
-
- String attendanceAllDatetimeStr = "";
- for(String str : attendanceAllDatetimeList) {
- attendanceAllDatetimeStr += str + ",";
- }
- if(StringUtil.isNotEmpty(attendanceAllDatetimeStr)) {
- attendanceAllDatetimeStr = attendanceAllDatetimeStr.substring(0,attendanceAllDatetimeStr.length() - 1);
- }
- attendanceTempEntity.setAlldatetime(attendanceAllDatetimeStr);
- attendanceTempService.save(attendanceTempEntity);
- } catch (ParseException e) {
- e.printStackTrace();
- returnFlg = false;
- } catch (Exception e) {
- e.printStackTrace();
- returnFlg = false;
- }
- }
- // 更新原始记录表中的数据为【已处理】
- dingAttendanceinfoEntity.setIsDispose(Globals.SHIFOU_01_1);
- try {
- dingAttendanceinfoService.saveOrUpdate(dingAttendanceinfoEntity);
- } catch (Exception e) {
- e.printStackTrace();
- returnFlg = false;
- }
- }
- }
- return returnFlg;
- }
- /**
- * 考勤实时查看分析考勤状态
- *
- */
- @Override
- public void SetAttendanceStatusAndWarning(Date date) {
- SimpleDateFormat dfYMD = new SimpleDateFormat("yyyy-MM-dd");
- // 获取当前日期
- Date nowDate = new Date();
-
- if(null != date) {
- nowDate = date;
- }
-
- Date yesterdayDate = new Date(nowDate.getTime() - 1000 * 60 * 60 * 24);
-
- String nowDateString = dfYMD.format(nowDate);
- String yesterdayDateString = dfYMD.format(yesterdayDate);
-
- try {
- nowDate = dfYMD.parse(nowDateString);
- yesterdayDate = dfYMD.parse(yesterdayDateString);
- } catch (ParseException e1) {
- e1.printStackTrace();
- }
- long time1 = System.currentTimeMillis();
-
- String attendanceTempByDateHql = "from AttendanceTempEntity where attendanceDate =? or attendanceDate = ?";
- List<AttendanceTempEntity> attendanceTempEntityList = attendanceTempService.findHql(attendanceTempByDateHql, nowDate, yesterdayDate);
- long time2 = System.currentTimeMillis();
- //System.out.println("attendanceTempEntityList cost:"+(time2-time1) +" ms");
- // 推送app消息的项目经理userid列表
- ArrayList<String> userIdList=new ArrayList<String>();
-
- for(AttendanceTempEntity attendanceTempEntity : attendanceTempEntityList) {
- // if("000000006120dd1c01612cf521d40173".equals(attendanceTempEntity.getUserId())) {
- // System.out.println("gllp");
- // }
- long time3 = System.currentTimeMillis();
- String personnelByUserIdHql = "from PersonnelBaseArchivesManageEntity where userid = ?";
- List<PersonnelBaseArchivesManageEntity> personnelBaseArchivesManageEntityList = personnelBaseArchivesManageService.findHql(personnelByUserIdHql, attendanceTempEntity.getUserId());
- long time4 = System.currentTimeMillis();
- //System.out.println("personnelBaseArchivesManageEntityList cost:"+(time4-time3) +" ms");
- if(personnelBaseArchivesManageEntityList.size() == 0) {
- continue;
- }
-
- PersonnelBaseArchivesManageEntity personnelBaseArchivesManageEntity = personnelBaseArchivesManageEntityList.get(0);
- // 如果员工未离职
- if(Globals.JOBSTATUS_1.equals(personnelBaseArchivesManageEntity.getPositionStatus()) || Globals.JOBSTATUS_2.equals(personnelBaseArchivesManageEntity.getPositionStatus())) {
- // 一线员工
- if(Globals.MANAGETYPE_2.equals(personnelBaseArchivesManageEntity.getManagerType())) {
- long time5 = System.currentTimeMillis();
- attendanceTempEntity = this.SetAttendanceStatus(attendanceTempEntity, attendanceTempEntityList,Globals.MANAGETYPE_2);
- long time6 = System.currentTimeMillis();
- //System.out.println("SetAttendanceStatus cost:"+(time6-time5) +" ms");
- } else {
- // 非一线员工(管理人员)
- }
- }
-
- // 添加项目经理维度的预警消息数据
- if(Globals.DUTYTYPE_zhiban.equals(attendanceTempEntity.getDutyType())){
- // 值班状态下, 超过最晚打卡时间
- if(attendanceTempEntity.getDatumEtime() != null && new Date().after(attendanceTempEntity.getDatumEtime())) {
- long time7 = System.currentTimeMillis();
- userIdList.addAll(this.setAttendanceWarnMsgByUser(attendanceTempEntity));
- long time8 = System.currentTimeMillis();
- //System.out.println("setAttendanceWarnMsgByUser cost:"+(time8-time7) +" ms");
- }
- }else {
- long time9 = System.currentTimeMillis();
- userIdList.addAll(this.setAttendanceWarnMsgByUser(attendanceTempEntity));
- long time10 = System.currentTimeMillis();
- //System.out.println("setAttendanceWarnMsgByUser cost:"+(time10-time9) +" ms");
- }
- // try {
- // attendanceTempService.save(attendanceTempEntity);
- // } catch (Exception e) {
- // org.jeecgframework.core.util.LogUtil.error(e.getMessage());
- // }
- }
- HashSet<String> hashSet = new HashSet<String>(userIdList);
- userIdList.clear();
- userIdList.addAll(hashSet);
- pushProcessor.pushCommon(userIdList, Globals.msg_type_3);
-
- //通过项目维度 统计计算预警消息
- long time11 = System.currentTimeMillis();
- this.setAttendanceWarnMsgByProject(yesterdayDate);
- long time12 = System.currentTimeMillis();
- //System.out.println("setAttendanceWarnMsgByProject yesterdayDate cost:"+(time12-time11) +" ms");
-
- this.setAttendanceWarnMsgByProject(nowDate);
- long time13 = System.currentTimeMillis();
- //System.out.println("setAttendanceWarnMsgByProject nowDate cost:"+(time13-time12) +" ms");
- }
-
- /**
- * 获取班次信息
- *
- * @param date
- * @param userId
- * @return
- */
- private Map<String, Object> getArrangeDutyInfo(Date date, String userId) {
- Map<String, Object> returnMap = new HashMap<String, Object>();
- // 检索项目排班详细表
- String projarrangeDetailHql = "from ProjarrangeDetailEntity where userid =? and yearmonth = ?";
- SimpleDateFormat dfYMD = new SimpleDateFormat("yyyy-MM-dd");
- String dateString = dfYMD.format(date);
- String yearMonth = dateString.substring(0, 7);
- List<ProjarrangeDetailEntity> projarrangeDetailEntityList = projarrangeDetailService.findHql(projarrangeDetailHql, userId, yearMonth);
-
- if(projarrangeDetailEntityList.size() > 0) {
- // 项目排班详细表ID
- String projarrangeDetailId = projarrangeDetailEntityList.get(0).getId();
-
- // 检索日历表
- String calendarHql = "from CalendarEntity where year =? and month =? and day = ?";
- int year = Integer.valueOf(dateString.substring(0,4));
- int month = Integer.valueOf(dateString.substring(5,7));
- int day = Integer.valueOf(dateString.substring(8,10));
- List<CalendarEntity> calendarList = calendarService.findHql(calendarHql, year, month, day);
- // 日历表ID
- String calendarId = calendarList.get(0).getId();
- // 检索员工排班详情表
- String userArrangeDetailHql = "from UserArrangeDetailEntity where calendarid =? and projarrangeDetailid = ?";
- List<UserArrangeDetailEntity> userArrangeDetailEntityList = userArrangeDetailService.findHql(userArrangeDetailHql, calendarId, projarrangeDetailId);
-
- if(userArrangeDetailEntityList.size() > 0) {
- // 班次ID
- String arrangeDutyId = userArrangeDetailEntityList.get(0).getShiftid();
-
- // 班次信息
- String arrangeDutyHql = "from ArrangeDutyEntity where id = ?";
- List<ArrangeDutyEntity> arrangeDutyEntityList = arrangeDutyService.findHql(arrangeDutyHql, arrangeDutyId);
- ArrangeDutyEntity arrangeDutyEntity = new ArrangeDutyEntity();
- if (arrangeDutyEntityList.size() != 0) {
- arrangeDutyEntity = arrangeDutyEntityList.get(0);
- returnMap.put("returnFlg", "1");
- returnMap.put("arrangeDutyEntity", arrangeDutyEntity);
- } else {
- returnMap.put("returnFlg", "0");
- returnMap.put("arrangeDutyEntity", new ArrangeDutyEntity());
- }
- } else {
- returnMap.put("returnFlg", "0");
- returnMap.put("arrangeDutyEntity", new ArrangeDutyEntity());
- }
- } else {
- returnMap.put("returnFlg", "0");
- returnMap.put("arrangeDutyEntity", new ArrangeDutyEntity());
- }
- return returnMap;
- }
-
- // /**
- // * 判断员工是否离职
- // *
- // * @param entity
- // * @param date
- // * @return
- // * @throws Exception
- // */
- // private boolean checkUserIsLeave(PersonnelBaseArchivesManageEntity entity, Date date) {
- // boolean result = true;
- // if (oConvertUtils.isNotEmpty(entity)&&oConvertUtils.isNotEmpty(date)) {
- // Date leaveDate = entity.getLeaveDate();
- // if (oConvertUtils.isEmpty(leaveDate)) {
- // result = false;
- // } else {
- // result = leaveDate.before(date);
- // }
- // }
- // return result;
- // }
-
- /**
- * 设置考勤状态
- *
- * @param attendanceTempEntity
- * @param attendanceTempEntityList
- * @param manageType
- * @return
- */
- private AttendanceTempEntity SetAttendanceStatus(AttendanceTempEntity attendanceTempEntity, List<AttendanceTempEntity> attendanceTempEntityList, String manageType) {
- SimpleDateFormat dfYMD = new SimpleDateFormat("yyyy-MM-dd");
- SimpleDateFormat dfYMDHm = new SimpleDateFormat("yyyy-MM-dd HH:mm");
- // userId
- String userId = attendanceTempEntity.getUserId();
- // 考勤日期
- Date todayDate = attendanceTempEntity.getAttendanceDate();
- Date tomorrowDate = new Date(attendanceTempEntity.getAttendanceDate().getTime() + 1000 * 60 * 60 * 24);
- Date yesterdayDate = new Date(attendanceTempEntity.getAttendanceDate().getTime() - 1000 * 60 * 60 * 24);
- String todayDateStr = dfYMD.format(todayDate);
- String tomorrowDateStr = dfYMD.format(tomorrowDate);
- String yesterdayDateStr = dfYMD.format(yesterdayDate);
-
- AttendanceTempEntity yesterdayTempEntity = getYesterdayTempEntity(attendanceTempEntityList, yesterdayDate);
- // 计算后的基准出勤时间
- String userBaseAttendanceTime = "";
- // 计算后的基准退勤时间
- String userBaseRetreatTime = "";
-
- // 开始打卡分钟数
- int spunchMinute = 0;
-
- // 结束打卡分钟数
- int epunchMinute = 0;
- if(attendanceTempEntity.getAttendanceStatus() != null) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_0);
- }
- // // 是否请假
- // List<HolidayEntity> holidayEntityList = attendanceTempDao.getHolidayEntityList(userId, attendanceDateStr, WorkFlowGlobals.BPM_BUS_STATUS_3);
- // if(holidayEntityList.size() > 0) {
- // String attendanceStatus = attendanceTempEntity.getAttendanceStatus();
- // if(StringUtil.isEmpty(attendanceStatus)) {
- // attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_4);
- // } else {
- // attendanceTempEntity.setAttendanceStatus(attendanceStatus + "," + Globals.ATTENDANCE_STATUS_4);
- // }
- // }
- // 一线员工
- if(Globals.MANAGETYPE_2.equals(manageType)) {
- String arrangeDutyId = attendanceTempEntity.getArrangeDutyId();
-
- // 班次Id为空的情况,考勤状态设置未排班
- if(StringUtil.isEmpty(arrangeDutyId)) {
- String attendanceStatus = attendanceTempEntity.getAttendanceStatus();
-
- if(StringUtil.isNotEmpty(attendanceStatus)) {
- attendanceStatus += "," + Globals.ATTENDANCE_STATUS_6;
- attendanceStatus = attendanceStatusSort(attendanceStatus);
- } else{
- attendanceStatus = Globals.ATTENDANCE_STATUS_6;
- }
- attendanceTempEntity.setAttendanceStatus(attendanceStatus);
- return attendanceTempEntity;
- } else {
- // 班次Id不为空的情况
- String arrangeDutyHql = "from ArrangeDutyEntity where id = ?";
- List<ArrangeDutyEntity> arrangeDutyEntityList = arrangeDutyService.findHql(arrangeDutyHql, arrangeDutyId);
- ArrangeDutyEntity arrangeDutyEntity = arrangeDutyEntityList.get(0);
-
- // 班次为加班,休息的情况状态都是正常
- if(Globals.DUTYTYPE_jiaban.equals(arrangeDutyEntity.getDutyType()) || Globals.DUTYTYPE_xiuxi.equals(arrangeDutyEntity.getDutyType())) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_0);
- return attendanceTempEntity;
- }
- // 班次为值班的情况
- if(Globals.DUTYTYPE_zhiban.equals(arrangeDutyEntity.getDutyType())) {
- attendanceTempEntity.setDutyType(Globals.DUTYTYPE_zhiban);
- String ondutyStimeTemp = todayDateStr + " " + arrangeDutyEntity.getOndutyStime();
- Date nowDate = new Date();
- SimpleDateFormat hmFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
- String nowDateStr = hmFormat.format(nowDate);
- if(nowDateStr.compareTo(ondutyStimeTemp) <= 0) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_0);
- } else {
- String allDateTime = attendanceTempEntity.getAlldatetime();
- if(StringUtil.isNotEmpty(allDateTime)) {
- String ondutyStime = arrangeDutyEntity.getOndutyStime();
- String ondutyEtime = arrangeDutyEntity.getOndutyEtime();
- if(ondutyStime.compareTo(ondutyEtime) > 0) {
- ondutyStime = todayDateStr + " " + ondutyStime;
- ondutyEtime = tomorrowDateStr + " " + ondutyEtime;
- } else {
- ondutyStime = todayDateStr + " " + ondutyStime;
- ondutyEtime = todayDateStr + " " + ondutyEtime;
- }
-
- List<String> allDateTimeList = Arrays.asList(allDateTime.split(","));
- for(String dateTime : allDateTimeList) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_3);
- if (dateTime.compareTo(ondutyStime) >= 0 && dateTime.compareTo(ondutyEtime) <= 0) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_0);
- break;
- }
- }
- } else {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_3);
- }
-
- }
- return attendanceTempEntity;
- } else {
- if(Globals.DUTYTYPE_yeban115.equals(arrangeDutyEntity.getDutyType())) {
- attendanceTempEntity.setDutyType(Globals.DUTYTYPE_yeban115);
- // 正常上班时间
- String normalworkStime = todayDateStr + " " + arrangeDutyEntity.getNormalworkStime();
-
- // 正常下班时间
- String normalworkEtime = tomorrowDateStr + " " + arrangeDutyEntity.getNormalworkEtime();
-
- // 值班开始时间
- String ondutyStime = "";
- if(StringUtil.isNotEmpty(arrangeDutyEntity.getOndutyStime())) {
- ondutyStime = tomorrowDateStr + " " + arrangeDutyEntity.getOndutyStime();
- }
-
- // 值班结束时间
- String ondutyEtime = "";
- if(StringUtil.isNotEmpty(arrangeDutyEntity.getOndutyEtime())) {
- ondutyEtime = tomorrowDateStr + " " + arrangeDutyEntity.getOndutyEtime();
- }
-
- // 超时加班开始时间
- String timeoutOvertimeStime = "";
- if(StringUtil.isNotEmpty(arrangeDutyEntity.getTimeOutOvertimeStime())) {
- timeoutOvertimeStime = tomorrowDateStr + " " + arrangeDutyEntity.getTimeOutOvertimeStime();
- }
-
- // 超时加班结束时间
- String timeoutOvertimeEtime = "";
- if(StringUtil.isNotEmpty(arrangeDutyEntity.getTimeOutOvertimeEtime())) {
- timeoutOvertimeEtime = tomorrowDateStr + " " + arrangeDutyEntity.getTimeOutOvertimeEtime();
- }
-
- // 开始打卡分钟数
- if(null != arrangeDutyEntity.getSpunchMinute()) {
- spunchMinute = arrangeDutyEntity.getSpunchMinute();
- }
-
-
- // 结束打卡分钟数
- if(null != arrangeDutyEntity.getEpunchMinute()) {
- epunchMinute = arrangeDutyEntity.getEpunchMinute();
- }
-
- // 加班备案时间
- Map<String, String> todayOvertimeRecord = new HashMap<String, String>();
- Map<String, String> tomorrowOvertimeRecord = new HashMap<String, String>();
- List<OvertimeRecordEntity> todayOvertimeRecordEntityList = attendanceTempDao.getOvertimeRecordEntityList(userId, todayDateStr);
- List<OvertimeRecordEntity> tomorrowOvertimeRecordEntityList = attendanceTempDao.getOvertimeRecordEntityList(userId, tomorrowDateStr);
- int i = 1;
- for (OvertimeRecordEntity overtimeRecordEntity : todayOvertimeRecordEntityList) {
- todayOvertimeRecord.put("overtimeRecordStime" + i, dfYMDHm.format(overtimeRecordEntity.getOvertimeStime()));
- todayOvertimeRecord.put("overtimeRecordEtime" + i, dfYMDHm.format(overtimeRecordEntity.getOvertimeEtime()));
- i++;
- }
- i = 1;
- for (OvertimeRecordEntity overtimeRecordEntity : tomorrowOvertimeRecordEntityList) {
- tomorrowOvertimeRecord.put("overtimeRecordStime" + i, dfYMDHm.format(overtimeRecordEntity.getOvertimeStime()));
- tomorrowOvertimeRecord.put("overtimeRecordEtime" + i, dfYMDHm.format(overtimeRecordEntity.getOvertimeEtime()));
- i++;
- }
-
- Map<String, String> baseTimeMap = getEffectiveAttendanceTime(normalworkStime, normalworkEtime, ondutyStime, ondutyEtime, timeoutOvertimeStime, timeoutOvertimeEtime, todayOvertimeRecord, tomorrowOvertimeRecord, "1");
-
- String baseRetreatTimeTemp = baseTimeMap.get("baseRetreatTime");
- String baseAttendanceTime = baseTimeMap.get("baseAttendanceTime");
- String baseRetreatTime = baseTimeMap.get("baseRetreatTime");
-
- userBaseAttendanceTime = baseAttendanceTime;
- userBaseRetreatTime = baseRetreatTime;
-
- HolidayEntity todayHolidayEntity = null;
- HolidayEntity tomorrowHolidayEntity = null;
-
- // 当天是否请假
- List<HolidayEntity> attendanceHolidayEntityList = attendanceTempDao.getHolidayEntityList(attendanceTempEntity.getUserId(), todayDateStr, WorkFlowGlobals.BPM_BUS_STATUS_3);
-
- // 当天请假开始时间和结束时间
- String todayHolidayStime = "";
- String todayHolidayEtime = "";
-
- if(attendanceHolidayEntityList.size() != 0) {
- // 考勤状态添加【请假】
- String attendanceStatus = attendanceTempEntity.getAttendanceStatus();
- if(StringUtil.isEmpty(attendanceStatus)) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_4);
- } else {
- attendanceStatus += "," + Globals.ATTENDANCE_STATUS_4;
- attendanceStatus = attendanceStatusSort(attendanceStatus);
- attendanceTempEntity.setAttendanceStatus(attendanceStatus);
- }
-
- todayHolidayEntity = attendanceHolidayEntityList.get(0);
- // 休假开始时间
- Date holidayStime = todayHolidayEntity.getHolidayStime();
- // 休假结束时间
- Date holidayEtime = todayHolidayEntity.getHolidayEtime();
-
- // 休假开始日期
- String holidaySdate = dfYMD.format(holidayStime);
- // 休假结束日期
- String holidayEdate = dfYMD.format(holidayEtime);
-
- // 请假开始日期等于当天
- if(todayDateStr.equals(holidaySdate)) {
- todayHolidayStime = dfYMDHm.format(holidayStime);
- // 请假结束日期等于当天
- if(todayDateStr.equals(holidayEdate)) {
- todayHolidayEtime = dfYMDHm.format(holidayEtime);
- } else {
- todayHolidayEtime = tomorrowDateStr + " 00:00";
- }
- } else {
- todayHolidayStime = todayDateStr + " 00:00";
- // 请假结束日期等于当天
- if(todayDateStr.equals(holidayEdate)) {
- todayHolidayEtime = dfYMDHm.format(holidayEtime);
- } else {
- todayHolidayEtime = tomorrowDateStr + " 00:00";
- }
- }
- if (todayHolidayStime.compareTo(baseAttendanceTime) <= 0 && todayHolidayEtime.compareTo(baseAttendanceTime) > 0) {
- baseAttendanceTime = todayHolidayEtime;
- }
-
- }
-
-
- // 第二天是否请假
- List<HolidayEntity> tomorrowHolidayEntityList = attendanceTempDao.getHolidayEntityList(attendanceTempEntity.getUserId(), tomorrowDateStr, WorkFlowGlobals.BPM_BUS_STATUS_3);
-
- // 第二天请假开始时间和结束时间
- String tomorrowHolidayStime = "";
- String tomorrowHolidayEtime = "";
-
- if(tomorrowHolidayEntityList.size() != 0) {
- // 考勤状态添加【请假】
- String attendanceStatus = attendanceTempEntity.getAttendanceStatus();
- if(StringUtil.isEmpty(attendanceStatus)) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_4);
- } else {
- attendanceStatus += "," + Globals.ATTENDANCE_STATUS_4;
- attendanceStatus = attendanceStatusSort(attendanceStatus);
- attendanceTempEntity.setAttendanceStatus(attendanceStatus);
- }
-
- tomorrowHolidayEntity = tomorrowHolidayEntityList.get(0);
- // 休假开始时间
- Date holidayStime = tomorrowHolidayEntity.getHolidayStime();
- // 休假结束时间
- Date holidayEtime = tomorrowHolidayEntity.getHolidayEtime();
-
- // 休假开始日期
- String holidaySdate = dfYMD.format(holidayStime);
- // 休假结束日期
- String holidayEdate = dfYMD.format(holidayEtime);
-
- // 请假开始日期等于当天
- if(tomorrowDateStr.equals(holidaySdate)) {
- tomorrowHolidayStime = dfYMDHm.format(holidayStime);
- // 请假结束日期等于当天
- if(tomorrowDateStr.equals(holidayEdate)) {
- tomorrowHolidayEtime = dfYMDHm.format(holidayEtime);
- } else {
- tomorrowHolidayEtime = tomorrowDateStr + " 23:59";
- }
- } else {
- tomorrowHolidayStime = tomorrowDateStr + " 00:00";
- // 请假结束日期等于当天
- if(tomorrowDateStr.equals(holidayEdate)) {
- tomorrowHolidayEtime = dfYMDHm.format(holidayEtime);
- } else {
- tomorrowHolidayEtime = tomorrowDateStr + " 23:59";
- }
- }
- if (tomorrowHolidayStime.compareTo(baseAttendanceTime) <= 0 && tomorrowHolidayEtime.compareTo(baseAttendanceTime) > 0) {
- if(tomorrowHolidayEtime.compareTo(baseRetreatTimeTemp) >= 0) {
- ;
- } else {
- baseAttendanceTime = tomorrowHolidayEtime;
- }
- }
- if (tomorrowHolidayStime.compareTo(baseRetreatTime) < 0 && tomorrowHolidayEtime.compareTo(baseRetreatTime) >= 0) {
- baseRetreatTime = tomorrowHolidayStime;
- }
- }
-
- if(todayHolidayEntity != null) {
- String holidayType = todayHolidayEntity.getHolidayType();
- if(!Globals.REST_TYPE_0.equals(holidayType) && !Globals.REST_TYPE_1.equals(holidayType)
- &&!Globals.REST_TYPE_7.equals(holidayType)) {
- return attendanceTempEntity;
- }
- }
-
- if(baseAttendanceTime.equals(baseRetreatTime)) {
- return attendanceTempEntity;
- } else {
- userBaseAttendanceTime = baseAttendanceTime;
- userBaseRetreatTime = baseRetreatTime;
- }
- } else {
- // 正常上班时间
- String normalworkStime = todayDateStr + " " + arrangeDutyEntity.getNormalworkStime();
-
- // 正常下班时间
- String normalworkEtime = todayDateStr + " " + arrangeDutyEntity.getNormalworkEtime();
-
- // 值班开始时间
- String ondutyStime = "";
- if(StringUtil.isNotEmpty(arrangeDutyEntity.getOndutyStime())) {
- ondutyStime = todayDateStr + " " + arrangeDutyEntity.getOndutyStime();
- }
-
- // 值班结束时间
- String ondutyEtime = "";
- if(StringUtil.isNotEmpty(arrangeDutyEntity.getOndutyEtime())) {
- ondutyEtime = todayDateStr + " " + arrangeDutyEntity.getOndutyEtime();
- }
-
- // 超时加班开始时间
- String timeoutOvertimeStime = "";
- if(StringUtil.isNotEmpty(arrangeDutyEntity.getTimeOutOvertimeStime())) {
- timeoutOvertimeStime = todayDateStr + " " + arrangeDutyEntity.getTimeOutOvertimeStime();
- }
-
- // 超时加班结束时间
- String timeoutOvertimeEtime = "";
- if(StringUtil.isNotEmpty(arrangeDutyEntity.getTimeOutOvertimeEtime())) {
- timeoutOvertimeEtime = todayDateStr + " " + arrangeDutyEntity.getTimeOutOvertimeEtime();
- }
-
- // 开始打卡分钟数
- if(null != arrangeDutyEntity.getSpunchMinute()) {
- spunchMinute = arrangeDutyEntity.getSpunchMinute();
- }
-
- // 结束打卡分钟数
- if(null != arrangeDutyEntity.getEpunchMinute()) {
- epunchMinute = arrangeDutyEntity.getEpunchMinute();
- }
-
- // 加班备案时间
- Map<String, String> todayOvertimeRecord = new HashMap<String, String>();
- Map<String, String> tomorrowOvertimeRecord = new HashMap<String, String>();
- List<OvertimeRecordEntity> todayOvertimeRecordEntityList = attendanceTempDao.getOvertimeRecordEntityList(userId, todayDateStr);
- int i = 1;
- for (OvertimeRecordEntity overtimeRecordEntity : todayOvertimeRecordEntityList) {
- todayOvertimeRecord.put("overtimeRecordStime" + i, dfYMDHm.format(overtimeRecordEntity.getOvertimeStime()));
- todayOvertimeRecord.put("overtimeRecordEtime" + i, dfYMDHm.format(overtimeRecordEntity.getOvertimeEtime()));
- i++;
- }
-
- Map<String, String> baseTimeMap = getEffectiveAttendanceTime(normalworkStime, normalworkEtime, ondutyStime, ondutyEtime, timeoutOvertimeStime, timeoutOvertimeEtime, todayOvertimeRecord, tomorrowOvertimeRecord, "0");
-
- String baseAttendanceTime = baseTimeMap.get("baseAttendanceTime");
- String baseRetreatTime = baseTimeMap.get("baseRetreatTime");
- userBaseAttendanceTime = baseAttendanceTime;
- userBaseRetreatTime = baseRetreatTime;
-
- HolidayEntity todayHolidayEntity = null;
- // 当天是否请假
- List<HolidayEntity> attendanceHolidayEntityList = attendanceTempDao.getHolidayEntityList(attendanceTempEntity.getUserId(), todayDateStr, WorkFlowGlobals.BPM_BUS_STATUS_3);
-
- // 当天请假开始时间和结束时间
- String todayHolidayStime = "";
- String todayHolidayEtime = "";
-
- if(attendanceHolidayEntityList.size() != 0) {
- // 考勤状态添加【请假】
- String attendanceStatus = attendanceTempEntity.getAttendanceStatus();
- if(StringUtil.isEmpty(attendanceStatus)) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_4);
- } else {
- attendanceStatus += "," + Globals.ATTENDANCE_STATUS_4;
- attendanceStatus = attendanceStatusSort(attendanceStatus);
- attendanceTempEntity.setAttendanceStatus(attendanceStatus);
- }
-
- for(int j = 0; j < attendanceHolidayEntityList.size(); j++) {
- todayHolidayEntity = attendanceHolidayEntityList.get(j);
- // 休假开始时间
- Date holidayStime = todayHolidayEntity.getHolidayStime();
- // 休假结束时间
- Date holidayEtime = todayHolidayEntity.getHolidayEtime();
-
- // 休假开始日期
- String holidaySdate = dfYMD.format(holidayStime);
- // 休假结束日期
- String holidayEdate = dfYMD.format(holidayEtime);
-
- // 请假开始日期等于当天
- if(todayDateStr.equals(holidaySdate)) {
- todayHolidayStime = dfYMDHm.format(holidayStime);
- // 请假结束日期等于当天
- if(todayDateStr.equals(holidayEdate)) {
- todayHolidayEtime = dfYMDHm.format(holidayEtime);
- } else {
- todayHolidayEtime = tomorrowDateStr + " 00:00";
- }
- } else {
- todayHolidayStime = todayDateStr + " 00:00";
- // 请假结束日期等于当天
- if(todayDateStr.equals(holidayEdate)) {
- todayHolidayEtime = dfYMDHm.format(holidayEtime);
- } else {
- todayHolidayEtime = tomorrowDateStr + " 00:00";
- }
- }
- if(todayHolidayStime.equals(todayDateStr + " 00:00") && todayHolidayEtime.equals(tomorrowDateStr + " 00:00")) {
- return attendanceTempEntity;
- } else {
- if(todayHolidayStime.compareTo(baseAttendanceTime) <= 0) {
- if(todayHolidayEtime.compareTo(baseAttendanceTime) >= 0 && todayHolidayEtime.compareTo(baseRetreatTime) <= 0) {
- baseAttendanceTime = todayHolidayEtime;
- }
- if(todayHolidayEtime.compareTo(baseAttendanceTime) >= 0 && todayHolidayEtime.compareTo(baseRetreatTime) >= 0) {
- return attendanceTempEntity;
- }
- }
- if(todayHolidayStime.compareTo(baseAttendanceTime) > 0 && todayHolidayStime.compareTo(baseRetreatTime) < 0) {
- if(todayHolidayEtime.compareTo(baseRetreatTime) >= 0) {
- baseRetreatTime = todayHolidayStime;
- }
- }
- }
- if(todayHolidayEntity != null) {
- String holidayType = todayHolidayEntity.getHolidayType();
- if(!Globals.REST_TYPE_0.equals(holidayType) && !Globals.REST_TYPE_1.equals(holidayType)) {
- return attendanceTempEntity;
- }
- }
- if(baseAttendanceTime.equals(baseRetreatTime)) {
- return attendanceTempEntity;
- } else {
- userBaseAttendanceTime = baseAttendanceTime;
- userBaseRetreatTime = baseRetreatTime;
- }
- }
- }
- }
-
- try {
- Date nowDate = new Date();
- Date userBaseAttendanceDateTime = dfYMDHm.parse(userBaseAttendanceTime);
- Date userBaseRetreatDateTime = dfYMDHm.parse(userBaseRetreatTime);
-
- // 当前时间Calendar
- Calendar nowDateCalendar = Calendar.getInstance();
- nowDateCalendar.setTime(nowDate);
-
- // 基准出勤时间Calendar
- Calendar userBaseAttendanceCalendar = Calendar.getInstance();
- userBaseAttendanceCalendar.setTime(userBaseAttendanceDateTime);
- Calendar userBaseAttendanceTempCalendar = Calendar.getInstance();
- userBaseAttendanceTempCalendar.setTime(userBaseAttendanceDateTime);
-
- // 基准退勤时间Calendar
- Calendar userBaseRetreatCalendar = Calendar.getInstance();
- userBaseRetreatCalendar.setTime(userBaseRetreatDateTime);
- Calendar userBaseRetreatTempCalendar = Calendar.getInstance();
- userBaseRetreatTempCalendar.setTime(userBaseRetreatDateTime);
-
- if(spunchMinute != 0) {
- userBaseAttendanceTempCalendar.add(Calendar.MINUTE, -spunchMinute);
- }
-
- if(epunchMinute != 0) {
- userBaseRetreatTempCalendar.add(Calendar.MINUTE, epunchMinute);
- }
-
- String allDateTime = attendanceTempEntity.getAlldatetime();
- List<String> allDateTimeList = new ArrayList<String>();
- if(StringUtil.isNotEmpty(allDateTime)) {
- List<String> allDateTimeTempList = Arrays.asList(allDateTime.split(","));
- for(String temp : allDateTimeTempList) {
- allDateTimeList.add(temp);
- }
- }
-
- // 实际出勤时间
- String attendanceDateTime = "";
- // 实际退勤时间
- String retreatDateTime = "";
-
- for(String dateTimeString : allDateTimeList) {
- Date dateTime = dfYMDHm.parse(dateTimeString);
- Calendar dateTimeCalendar = Calendar.getInstance();
- dateTimeCalendar.setTime(dateTime);
-
-
- if(!dateTimeCalendar.before(userBaseAttendanceTempCalendar)) {
- if(StringUtil.isEmpty(attendanceDateTime)) {
- attendanceDateTime = dateTimeString;
- continue;
- }
- } else {
- continue;
- }
-
- if(!dateTimeCalendar.after(userBaseRetreatTempCalendar)) {
- retreatDateTime = dateTimeString;
- }
- }
-
- if(nowDateCalendar.after(userBaseAttendanceTempCalendar)) {
- if(StringUtil.isNotEmpty(attendanceDateTime)) {
- Date attendanceDateTimeForDate = dfYMDHm.parse(attendanceDateTime);
- Calendar attendanceDateTimeForDateCalendar = Calendar.getInstance();
- attendanceDateTimeForDateCalendar.setTime(attendanceDateTimeForDate);
-
- int dateDiffint = DataUtils.dateDiff('m', attendanceDateTimeForDateCalendar,userBaseAttendanceCalendar);
-
- if(dateDiffint > 10 && dateDiffint <= 30) {
- attendanceTempEntity.setLateminute(dateDiffint);
- String attendanceStatus = attendanceTempEntity.getAttendanceStatus();
- if(StringUtil.isEmpty(attendanceStatus)) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_1);
- } else {
- attendanceStatus += "," + Globals.ATTENDANCE_STATUS_1;
- attendanceStatus = attendanceStatusSort(attendanceStatus);
- attendanceTempEntity.setAttendanceStatus(attendanceStatus);
- }
- }
- }
-
-
- if(StringUtil.isNotEmpty(retreatDateTime)) {
- Date retreatDateTimeForDate = dfYMDHm.parse(retreatDateTime);
- Calendar retreatDateTimeForDateCalendar = Calendar.getInstance();
- retreatDateTimeForDateCalendar.setTime(retreatDateTimeForDate);
-
- int dateDiffint = DataUtils.dateDiff('m', userBaseRetreatCalendar,retreatDateTimeForDateCalendar);
-
- if(dateDiffint > 10 && dateDiffint <= 30) {
- attendanceTempEntity.setLeaveearlyminute(dateDiffint);
- String attendanceStatus = attendanceTempEntity.getAttendanceStatus();
- if(StringUtil.isEmpty(attendanceStatus)) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_2);
- } else {
- attendanceStatus += "," + Globals.ATTENDANCE_STATUS_2;
- attendanceStatus = attendanceStatusSort(attendanceStatus);
- attendanceTempEntity.setAttendanceStatus(attendanceStatus);
- }
- }
- }
- }
-
- if(nowDateCalendar.after(userBaseRetreatTempCalendar)) {
- if(arrangeDutyEntity.getDutyType().equals(Globals.DUTYTYPE_yeban115)) {
- retreatDateTime = getTomorrowTetreatDateTime(attendanceTempEntity, arrangeDutyEntity, userBaseRetreatDateTime);
- }
- if(StringUtil.isEmpty(attendanceDateTime) || StringUtil.isEmpty(retreatDateTime)) {
-
- if(StringUtil.isEmpty(attendanceDateTime) && StringUtil.isEmpty(retreatDateTime)) {
- // 两次都没打卡,算旷工
- String attendanceStatus = attendanceTempEntity.getAttendanceStatus();
- if(StringUtil.isEmpty(attendanceStatus)) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_3);
- } else {
- attendanceStatus += "," + Globals.ATTENDANCE_STATUS_3;
- attendanceStatus = attendanceStatusSort(attendanceStatus);
- attendanceTempEntity.setAttendanceStatus(attendanceStatus);
- }
- }else {
- String attendanceStatus = attendanceTempEntity.getAttendanceStatus();
- if(StringUtil.isEmpty(attendanceStatus)) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_5);
- } else {
- attendanceStatus += "," + Globals.ATTENDANCE_STATUS_5;
- attendanceStatus = attendanceStatusSort(attendanceStatus);
- attendanceTempEntity.setAttendanceStatus(attendanceStatus);
- }
- }
- } else {
- // 出勤是否旷工
- Date attendanceDateTimeForDate = dfYMDHm.parse(attendanceDateTime);
- Calendar attendanceDateTimeForDateCalendar = Calendar.getInstance();
- attendanceDateTimeForDateCalendar.setTime(attendanceDateTimeForDate);
-
- int attendanceDateTimeDiffint = DataUtils.dateDiff('m', attendanceDateTimeForDateCalendar,userBaseAttendanceCalendar);
-
- if(attendanceDateTimeDiffint > 30) {
- String attendanceStatus = attendanceTempEntity.getAttendanceStatus();
- if(StringUtil.isEmpty(attendanceStatus)) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_3);
- } else {
- attendanceStatus += "," + Globals.ATTENDANCE_STATUS_3;
- attendanceStatus = attendanceStatusSort(attendanceStatus);
- attendanceTempEntity.setAttendanceStatus(attendanceStatus);
- }
- }
-
- // 退勤是否旷工
- Date retreatDateTimeForDate = dfYMDHm.parse(retreatDateTime);
- Calendar retreatDateTimeForDateCalendar = Calendar.getInstance();
- retreatDateTimeForDateCalendar.setTime(retreatDateTimeForDate);
-
- int retreatDateTimeDiffint = DataUtils.dateDiff('m', userBaseRetreatCalendar,retreatDateTimeForDateCalendar);
-
- if(retreatDateTimeDiffint > 30) {
- String attendanceStatus = attendanceTempEntity.getAttendanceStatus();
- if(StringUtil.isEmpty(attendanceStatus)) {
- attendanceTempEntity.setAttendanceStatus(Globals.ATTENDANCE_STATUS_3);
- } else {
- attendanceStatus += "," + Globals.ATTENDANCE_STATUS_3;
- attendanceStatus = attendanceStatusSort(attendanceStatus);
- attendanceTempEntity.setAttendanceStatus(attendanceStatus);
- }
- }
- }
- }
- } catch (ParseException e1) {
- e1.printStackTrace();
- }
- }
- }
- } else {
- // 非一线员工
- }
- return attendanceTempEntity;
- }
-
- /**
- * @param attendanceTempEntity
- * @param arrangeDutyEntity
- * @param userBaseRetreatDateTime
- * @return
- */
- private String getTomorrowTetreatDateTime(AttendanceTempEntity attendanceTempEntity,
- ArrangeDutyEntity arrangeDutyEntity, Date standardEndDateTime) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Calendar standardEndCalendar = Calendar.getInstance();
- standardEndCalendar.setTime(standardEndDateTime);
- Calendar retreatCalendar = Calendar.getInstance();
- retreatCalendar.setTime(standardEndDateTime);
- if(null != arrangeDutyEntity.getEpunchMinute()) {
- retreatCalendar.add(Calendar.MINUTE, arrangeDutyEntity.getEpunchMinute()+1);
- }
- CriteriaQuery cq = new CriteriaQuery(DingAttendanceinfoEntity.class);
- cq.eq("userId", attendanceTempEntity.getUserId());
- cq.add();
- cq.between("attendanceTime", standardEndCalendar.getTime(), retreatCalendar.getTime());
- cq.add();
- cq.addOrder("attendanceTime", SortDirection.desc);
- // String hql = "from DingAttendanceinfoEntity where attendanceTime like '" +sdf.format(userBaseRetreatTempCalendar)+"%' "
- // + "and userId='" +attendanceTempEntity.getUserId() +"'";
- List<DingAttendanceinfoEntity> entitiesFromDB = systemService.getListByCriteriaQuery(cq, false);
- if(entitiesFromDB != null && entitiesFromDB.size()>0) {
- Date attTime = entitiesFromDB.get(0).getAttendanceTime();
- return sdf.format(attTime);
- }
- return null;
- }
- /**
- * @param attendanceTempEntity
- * @param userBaseRetreatTempCalendar
- * @return
- */
- private String getTomorrowTetreatDateTime(AttendanceTempEntity attendanceTempEntity, Calendar userBaseRetreatTempCalendar) {
- String strDateFormat = "yyyy-MM";
- SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
- // CriteriaQuery cq = new CriteriaQuery(DingAttendanceinfoEntity.class);
- // cq.like("attendanceTime", sdf.format(userBaseRetreatTempCalendar)+"%");
- // cq.add();
- // cq.between("attendanceTime", curdate, tomdate);
- // cq.add();
- // cq.addOrder("attendanceTime", SortDirection.asc);
- String hql = "from DingAttendanceinfoEntity where attendanceTime like '" +sdf.format(userBaseRetreatTempCalendar)+"%' "
- + "and userId='" +attendanceTempEntity.getUserId() +"'";
- List<DingAttendanceinfoEntity> entitiesFromDB = systemService.findHql(hql);
- return null;
- }
- /**
- * @param attendanceTempEntityList
- * @param yesterdayDateStr
- * @return
- */
- private AttendanceTempEntity getYesterdayTempEntity(List<AttendanceTempEntity> attendanceTempEntityList,
- Date yesterdayDate) {
- if(yesterdayDate != null && attendanceTempEntityList != null && attendanceTempEntityList.size()>0) {
- for(AttendanceTempEntity entity : attendanceTempEntityList) {
- if(entity.getAttendanceDate().compareTo(yesterdayDate) == 0) {
- return entity;
- }
- }
- }
- return null;
- }
- /**
- * 获取基准出退勤时间(不包含请假,开始结束打卡分钟数)
- *
- * @param normalworkStime 正常上班时间
- * @param normalworkEtime 正常下班时间
- * @param ondutyStime 值班开始时间
- * @param ondutyEtime 值班结束时间
- * @param timeoutOvertimeStime 超时加班开始时间
- * @param timeoutOvertimeEtime 超时加班结束时间
- * @param todayOvertimeRecord 当天加班备案开始时间
- * @param tomorrowOvertimeRecord 第二天加班备案时间
- * @param flg 白班夜班区分 1:夜班
- * @return Map<String, String>
- * baseAttendanceTime 基准开始时间
- * baseRetreatTime 基准结束时间
- */
- private Map<String, String> getEffectiveAttendanceTime(
- String normalworkStime, String normalworkEtime, String ondutyStime,
- String ondutyEtime, String timeoutOvertimeStime,
- String timeoutOvertimeEtime,
- Map<String, String> todayOvertimeRecord,
- Map<String, String> tomorrowOvertimeRecord,
- String flg) {
- Map<String, String> returnMap = new HashMap<String, String>();
-
- // 基准出勤时间
- String baseAttendanceTime = normalworkStime;
- // 基准退勤时间
- String baseRetreatTime = normalworkEtime;
-
- // 基准出勤时间计算
- if (StringUtil.isNotEmpty(ondutyStime)) {
- if (StringUtil.isNotEmpty(timeoutOvertimeStime)) {
- if (baseAttendanceTime.equals(timeoutOvertimeEtime)) {
- baseAttendanceTime = timeoutOvertimeStime;
- if (baseAttendanceTime.equals(ondutyEtime)) {
- baseAttendanceTime = ondutyStime;
- } else {
- ;
- }
- } else {
- if (baseAttendanceTime.equals(ondutyEtime)) {
- baseAttendanceTime = ondutyStime;
- if (baseAttendanceTime.equals(timeoutOvertimeEtime)) {
- baseAttendanceTime = timeoutOvertimeStime;
- } else {
- ;
- }
- }
- }
- } else {
- if (baseAttendanceTime.equals(ondutyEtime)) {
- baseAttendanceTime = ondutyStime;
- } else {
- ;
- }
- }
- } else {
- if (StringUtil.isNotEmpty(timeoutOvertimeStime)) {
- if (baseAttendanceTime.equals(timeoutOvertimeEtime)) {
- baseAttendanceTime = timeoutOvertimeStime;
- } else {
- ;
- }
- }
- }
-
- // 基准退勤时间计算
- if (StringUtil.isNotEmpty(ondutyStime)) {
- if (StringUtil.isNotEmpty(timeoutOvertimeStime)) {
- if (baseRetreatTime.equals(timeoutOvertimeStime)) {
- baseRetreatTime = timeoutOvertimeEtime;
- if (baseRetreatTime.equals(ondutyStime)) {
- baseRetreatTime = ondutyEtime;
- } else {
- ;
- }
- } else {
- if (baseRetreatTime.equals(ondutyStime)) {
- baseRetreatTime = ondutyEtime;
- if (baseRetreatTime.equals(timeoutOvertimeStime)) {
- baseRetreatTime = timeoutOvertimeEtime;
- } else {
- ;
- }
- } else {
- ;
- }
- }
- } else {
- if (baseRetreatTime.equals(ondutyStime)) {
- baseRetreatTime = ondutyEtime;
- } else {
- ;
- }
- }
- } else {
- if (StringUtil.isNotEmpty(timeoutOvertimeStime)) {
- if (baseRetreatTime.equals(timeoutOvertimeStime)) {
- baseRetreatTime = timeoutOvertimeEtime;
- } else {
- ;
- }
- }
- }
-
- int todayOvertimeRecordSize = todayOvertimeRecord.size() / 2;
- int tomorrowOvertimeRecordSize = tomorrowOvertimeRecord.size() / 2;
- if("1".equals(flg)) {
- if(todayOvertimeRecordSize > 0) {
- for(int i = 1; i <= todayOvertimeRecordSize; i++) {
- String todayOvertimeRecordStr = todayOvertimeRecord.get("overtimeRecordEtime" + i);
- if (baseAttendanceTime.equals(todayOvertimeRecordStr)) {
- baseAttendanceTime = todayOvertimeRecord.get("overtimeRecordStime" + i);
- for(int j = i - 1; j > 0; j--) {
- String todayOvertimeRecordStr1 = todayOvertimeRecord.get("overtimeRecordEtime" + j);
- if (baseAttendanceTime.equals(todayOvertimeRecordStr1)) {
- baseAttendanceTime = todayOvertimeRecord.get("overtimeRecordStime" + j);
- }
- }
- } else {
- break;
- }
- }
- }
- if(tomorrowOvertimeRecordSize > 0) {
- for(int i = tomorrowOvertimeRecordSize; i >= 1; i--) {
- String tomorrowOvertimeRecordStr = tomorrowOvertimeRecord.get("overtimeRecordStime" + i);
- if (baseRetreatTime.equals(tomorrowOvertimeRecordStr)) {
- baseRetreatTime = tomorrowOvertimeRecord.get("overtimeRecordEtime" + i);
- for(int j = i + 1; j <= todayOvertimeRecordSize; j++) {
- String todayOvertimeRecordStr1 = todayOvertimeRecord.get("overtimeRecordStime" + j);
- if (baseRetreatTime.equals(todayOvertimeRecordStr1)) {
- baseRetreatTime = todayOvertimeRecord.get("overtimeRecordEtime" + j);
- }
- }
- } else {
- break;
- }
- }
- }
-
- } else {
- if(todayOvertimeRecordSize > 0) {
- // 获取基准出勤时间
- for(int i = 1; i <= todayOvertimeRecordSize; i++) {
- String todayOvertimeRecordStr = todayOvertimeRecord.get("overtimeRecordEtime" + i);
- if (baseAttendanceTime.equals(todayOvertimeRecordStr)) {
- baseAttendanceTime = todayOvertimeRecord.get("overtimeRecordStime" + i);
- for(int j = i - 1; j > 0; j--) {
- String todayOvertimeRecordStr1 = todayOvertimeRecord.get("overtimeRecordEtime" + j);
- if (baseAttendanceTime.equals(todayOvertimeRecordStr1)) {
- baseAttendanceTime = todayOvertimeRecord.get("overtimeRecordStime" + j);
- }
- }
- }
- }
-
- // 获取基准退勤时间
- for(int i = 1; i <= todayOvertimeRecordSize; i++) {
- String todayOvertimeRecordStr = todayOvertimeRecord.get("overtimeRecordStime" + i);
- if (baseRetreatTime.equals(todayOvertimeRecordStr)) {
- baseRetreatTime = todayOvertimeRecord.get("overtimeRecordEtime" + i);
- for(int j = i + 1; j <= todayOvertimeRecordSize; j++) {
- String todayOvertimeRecordStr1 = todayOvertimeRecord.get("overtimeRecordStime" + j);
- if (baseRetreatTime.equals(todayOvertimeRecordStr1)) {
- baseRetreatTime = todayOvertimeRecord.get("overtimeRecordEtime" + j);
- }
- }
- }
- }
- }
- }
-
- returnMap.put("baseAttendanceTime", baseAttendanceTime);
- returnMap.put("baseRetreatTime", baseRetreatTime);
- return returnMap;
- }
-
-
-
- /**
- * 对考勤状态进行去重排序
- *
- * @param attendanceStatus
- * @return
- */
- private String attendanceStatusSort(String attendanceStatus) {
- List<String> attendanceStatusList = new ArrayList<String>();
- List<String> attendanceStatusTempList = Arrays.asList(attendanceStatus.split(","));
- for(String temp : attendanceStatusTempList) {
- attendanceStatusList.add(temp);
- }
-
- HashSet<String> attendanceStatusHashSet = new HashSet<String>(attendanceStatusList);
- attendanceStatusList.clear();
- attendanceStatusList.addAll(attendanceStatusHashSet);
- Collections.sort(attendanceStatusList);
-
- attendanceStatus = "";
- for(String str : attendanceStatusList) {
- attendanceStatus += str + ",";
- }
- attendanceStatus = attendanceStatus.substring(0,attendanceStatus.length() - 1);
-
- return attendanceStatus;
- }
-
- /**
- * 根据组织Id获取项目Id以及项目——部门之间的名称
- *
- * @param belongUnitid
- * @return returnMap
- * projectId 项目Id
- * projectName 项目——部门名称
- */
- private Map<String, String> getProjectNameByBelongUnitid(String belongUnitid) {
- Map<String, String> returnMap = new HashMap<String, String>();
- String projectId = "";
- String projectName = "";
- List<String> departNameList = new ArrayList<String>();
- while (1 == 1) {
- Map<String, String> departInfo = this.getDepartById(belongUnitid);
- String id = departInfo.get("id");
- belongUnitid = departInfo.get("parentDepartId");
- String orgType = departInfo.get("orgType");
- String departName = departInfo.get("departName");
- if(StringUtil.isEmpty(id)) {
- break;
- } else {
- departNameList.add(departName);
- projectId = id;
- if (Globals.org_type_2.equals(orgType)) {
- if (StringUtil.isEmpty(belongUnitid)) {
- break;
- } else {
- ;
- }
- } else {
- break;
- }
- }
- }
- for(int i = departNameList.size() - 1; i >= 0; i--) {
- projectName += departNameList.get(i) + "-";
- }
- if(StringUtil.isNotEmpty(projectName)) {
- projectName = projectName.substring(0, projectName.length() - 1);
- }
- returnMap.put("projectId", projectId);
- returnMap.put("projectName", projectName);
- return returnMap;
- }
-
- /**
- * 根据组织Id获取组织信息
- *
- * @param id 组织Id
- * @return returnDepartInfo
- * id 组织Id
- * parentDepartId 父组织Id
- * orgType 组织类型
- * departName 组织名
- */
- private Map<String, String> getDepartById(String id) {
-
- Map<String, String> returnDepartInfo = new HashMap<String, String>();
- // 查询组织信息
- StringBuilder SelectDepartByIdSql = new StringBuilder();
- SelectDepartByIdSql.append(" SELECT ");
- SelectDepartByIdSql.append(" id,parentdepartid,org_type,departname ");
- SelectDepartByIdSql.append(" FROM t_s_depart ");
- SelectDepartByIdSql.append(" WHERE ");
- SelectDepartByIdSql.append(" id = '" + id + "'");
- List<Map<String, Object>> departList = systemService
- .findForJdbc(SelectDepartByIdSql.toString());
- Map<String, Object> departInfo = departList.get(0);
- String parentDepartId = (String) departInfo.get("parentdepartid");
- String orgType = (String) departInfo.get("org_type");
- String departName = (String) departInfo.get("departname");
-
- returnDepartInfo.put("id", id);
- returnDepartInfo.put("parentDepartId", parentDepartId);
- returnDepartInfo.put("orgType", orgType);
- returnDepartInfo.put("departName", departName);
-
- return returnDepartInfo;
- }
-
- private AttendanceTempEntity getZhibanTime(ArrangeDutyEntity arrangeDutyEntity, DingAttendanceinfoEntity dingAttendanceinfoEntity, List<String> attendanceAllDatetimeList, AttendanceTempEntity attendanceTempEntity, boolean yesterdayFlg) throws Exception {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String ondutyStime = arrangeDutyEntity.getOndutyStime();
- String ondutyEtime = arrangeDutyEntity.getOndutyEtime();
- if(ondutyStime.compareTo(ondutyEtime) > 0) {
- // 值夜班
-
- Calendar startCalendar = Calendar.getInstance();
- Calendar endCalendar = Calendar.getInstance();
- if(yesterdayFlg) {
- // 开始日期
- Date dateYesterday = new Date(dingAttendanceinfoEntity.getAttendanceDate().getTime() - 1000 * 60 * 60 * 24);
- startCalendar.setTime(dateYesterday);
- // 结束日期
- endCalendar.setTime(dingAttendanceinfoEntity.getAttendanceDate());
- } else {
- // 开始日期
- startCalendar.setTime(dingAttendanceinfoEntity.getAttendanceDate());
- Date dateTomorrow = new Date(dingAttendanceinfoEntity.getAttendanceDate().getTime() + 1000 * 60 * 60 * 24);
- // 结束日期
- endCalendar.setTime(dateTomorrow);
- }
-
- String[] ondutyStimeTemp = ondutyStime.split(":");
- String[] ondutyEtimeTemp = ondutyEtime.split(":");
-
- startCalendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(ondutyStimeTemp[0]));
- startCalendar.set(Calendar.MINUTE, Integer.valueOf(ondutyStimeTemp[1]));
-
- endCalendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(ondutyEtimeTemp[0]));
- endCalendar.set(Calendar.MINUTE, Integer.valueOf(ondutyEtimeTemp[1]));
-
- String startStr = dateFormat.format(startCalendar.getTime());
- String endStr = dateFormat.format(endCalendar.getTime());
-
- List<String> attendanceTimeListTemp = new ArrayList<String>();
- for (int i = 0; i < attendanceAllDatetimeList.size(); i++) {
- if(startStr.compareTo(attendanceAllDatetimeList.get(i) + ":00") <= 0 && endStr.compareTo(attendanceAllDatetimeList.get(i) + ":00") >= 0) {
- attendanceTimeListTemp.add(attendanceAllDatetimeList.get(i));
- }
- }
-
- if (attendanceTimeListTemp.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeListTemp.get(0) + ":00"));
- }
- if (attendanceTimeListTemp.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeListTemp.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeListTemp.get(attendanceTimeListTemp.size() - 1) + ":00"));
- }
- } else {
- // 值日班
- // 开始时间
- Calendar startCalendar = Calendar.getInstance();
- // 结束时间
- Calendar endCalendar = Calendar.getInstance();
-
- startCalendar.setTime(dingAttendanceinfoEntity.getAttendanceDate());
- endCalendar.setTime(dingAttendanceinfoEntity.getAttendanceDate());
-
- String[] ondutyStimeTemp = ondutyStime.split(":");
- String[] ondutyEtimeTemp = ondutyEtime.split(":");
-
- startCalendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(ondutyStimeTemp[0]));
- startCalendar.set(Calendar.MINUTE, Integer.valueOf(ondutyStimeTemp[1]));
-
- endCalendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(ondutyEtimeTemp[0]));
- endCalendar.set(Calendar.MINUTE, Integer.valueOf(ondutyEtimeTemp[1]));
-
- String startStr = dateFormat.format(startCalendar.getTime());
- String endStr = dateFormat.format(endCalendar.getTime());
-
- List<String> attendanceTimeListTemp = new ArrayList<String>();
- for (int i = 0; i < attendanceAllDatetimeList.size(); i++) {
- if(startStr.compareTo(attendanceAllDatetimeList.get(i) + ":00") <= 0 && endStr.compareTo(attendanceAllDatetimeList.get(i) + ":00") >= 0) {
- attendanceTimeListTemp.add(attendanceAllDatetimeList.get(i));
- }
- }
-
- if (attendanceTimeListTemp.size() == 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeListTemp.get(0) + ":00"));
- }
- if (attendanceTimeListTemp.size() > 1) {
- attendanceTempEntity.setSignDate(dateFormat.parse(attendanceTimeListTemp.get(0) + ":00"));
- attendanceTempEntity.setNewestPunchcardDate(dateFormat.parse(attendanceTimeListTemp.get(attendanceTimeListTemp.size() - 1) + ":00"));
- }
- }
-
- return attendanceTempEntity;
- }
-
-
- /**
- * 给项目经理发送预警消息
- *
- * @param attendanceTempEntity
- */
- private List<String> setAttendanceWarnMsgByUser(AttendanceTempEntity attendanceTempEntity) {
- //推送app消息的项目经理userid列表
- ArrayList<String> userIdList=new ArrayList<String>();
- // 考勤状态
- String attendanceStatus = attendanceTempEntity.getAttendanceStatus();
-
- List<String> attendanceStatusList = new ArrayList<String>();
- if(StringUtil.isNotEmpty(attendanceStatus)) {
- attendanceStatusList = Arrays.asList(attendanceStatus.split(","));
- }
-
- if(attendanceStatusList.size() > 0) {
- for(String status : attendanceStatusList) {
- if(Globals.ATTENDANCE_STATUS_1.equals(status) || Globals.ATTENDANCE_STATUS_2.equals(status)
- || Globals.ATTENDANCE_STATUS_3.equals(status) || Globals.ATTENDANCE_STATUS_5.equals(status)) {
- // 用户Id
- String userId = attendanceTempEntity.getUserId();
-
- // 用户姓名
- String realname = attendanceTempEntity.getRealname();
- // if("0000000061459498016145fbf2ea0af1".equals(attendanceTempEntity.getUserId())) {
- // System.out.println("");
- // }
-
- // 所属组织
- String belongUnitid = attendanceTempEntity.getBelongUnitid();
-
- // 考勤时间
- Date attendanceDate = attendanceTempEntity.getAttendanceDate();
-
- // 迟到分钟数
- Integer lateminute = attendanceTempEntity.getLateminute();
-
- // 早退分钟数
- Integer leaveearlyminute = attendanceTempEntity.getLeaveearlyminute();
-
- // 所属组织名称
- // String belongUnitname = departService.get(TSDepart.class, belongUnitid).getDepartname();
-
- // 所属项目名称
- String projectId = this.getBybelongId(userId);
- String projectNameString = departService.get(TSDepart.class, belongUnitid).getDepartname();
-
- // 状态名称
- String statusName = "";
- // 提示信息
- String msgInfo = "";
- // 消息类型
- String msgType = "";
-
- if(Globals.ATTENDANCE_STATUS_1.equals(status)) {
- statusName = "迟到";
- msgType = "chidao";
- msgInfo = realname + " " + statusName + "<span class= 'redWord '>" + lateminute.intValue() + "</span>分钟";
- }
- if(Globals.ATTENDANCE_STATUS_2.equals(status)) {
- statusName = "早退";
- msgType = "zaotui";
- msgInfo = realname + " " + statusName + "<span class= 'redWord '>" + leaveearlyminute.intValue() + "</span>分钟";
- }
- if(Globals.ATTENDANCE_STATUS_3.equals(status)) {
- statusName = "旷工";
- msgType = "kuanggong";
- msgInfo = realname + " " + statusName;
- }
- if(Globals.ATTENDANCE_STATUS_5.equals(status)) {
- statusName = "未打卡";
- msgType = "weidaka";
- msgInfo = realname + " " + statusName;
- }
- String attendanceWarnMsgHql = "from AttendanceWarnMsgEntity where userId =? and sendTime =? and msgType =? and msgContent = ?";
- List<AttendanceWarnMsgEntity> attendanceWarnMsgEntityList = attendanceWarnMsgService.findHql(attendanceWarnMsgHql, userId, attendanceDate, msgType, msgInfo);
- if (attendanceWarnMsgEntityList.size() == 0) {
- AttendanceWarnMsgEntity attendanceWarnMsgEntity = new AttendanceWarnMsgEntity();
-
- attendanceWarnMsgEntity.setMsgContent(msgInfo);
- attendanceWarnMsgEntity.setUserId(userId);
- attendanceWarnMsgEntity.setOrgId(projectId);
- attendanceWarnMsgEntity.setMsgTitle(projectNameString);
- attendanceWarnMsgEntity.setSendTime(attendanceDate);
- attendanceWarnMsgEntity.setCreateDate(new Date());
- attendanceWarnMsgEntity.setMsgType(msgType);
-
- try {
- attendanceWarnMsgService.save(attendanceWarnMsgEntity);
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- List<AttendanceWarnMsgDetailEntity> msgdetaillist = new ArrayList<>();
- //将msg 发送给项目经理
- String pid = attendanceWarnMsgEntity.getOrgId();
- String mngid = null;
- TSDepart depart = commonService.get(TSDepart.class, pid);
- if (null!=depart) {
- mngid = depart.getDeptProjManagerid();
- }
- if (oConvertUtils.isNotEmpty(mngid)) {
- AttendanceWarnMsgDetailEntity detailEntity = new AttendanceWarnMsgDetailEntity();
- detailEntity.setMsgId(attendanceWarnMsgEntity.getId());
- detailEntity.setReceivedId(mngid);
- detailEntity.setReadStatus(Globals.read_status_0);
- msgdetaillist.add(detailEntity);
- userIdList.add(mngid);
- }
- // 根据用户userIdList和消息具体类型批量推送
- attendanceWarnMsgService.batchSave(msgdetaillist);
-
- }
- }
- }
- }
- return userIdList;
- }
-
- /**
- * 通过人查询所属项目
- * @param userid
- * @return
- */
- private String getBybelongId(String userid){
- String temp = "";
- StringBuffer hql = new StringBuffer("from TSUserOrg where tsUser.id = :userid and ifpluralism = 0 and status=0");
- List<TSUserOrg> tsList = commonService.getSession().createQuery(hql.toString()).setParameter("userid", userid).list();
- if(!tsList.isEmpty()){
- TSUserOrg uo = tsList.get(0);
- TSDepart tsDepart = uo.getTsDepart();
- if("1".equals(tsDepart.getOrgType()) || "3".equals(tsDepart.getOrgType()) || "4".equals(tsDepart.getOrgType()) || "5".equals(tsDepart.getOrgType())){
- temp = tsDepart.getId();
- }else if("2".equals(tsDepart.getOrgType()) && "1".equals(tsDepart.getTSPDepart().getOrgType())){
- temp = tsDepart.getId();
- }else{
- temp = selectById(tsDepart.getId());
- }
- }
- return temp;
- }
-
- private String selectById(String id){
- String temp = "";
-
- TSDepart tsDepart = commonService.getEntity(TSDepart.class,id);
- if("3".equals(tsDepart.getOrgType()) || "5".equals(tsDepart.getOrgType())){
- temp = tsDepart.getId();
- }else{
- if(tsDepart.getTSPDepart() != null){
- selectById(tsDepart.getTSPDepart().getId());
- temp = tsDepart.getTSPDepart().getId();
- }
- }
- return temp;
- }
-
- private void setAttendanceWarnMsgByProject(Date date) {
- SimpleDateFormat dfYMD = new SimpleDateFormat("yyyy-MM-dd");
- String dateStr = dfYMD.format(date);
-
- List<ProjectAbnormalDetailDto> padtolist = attendanceWarnMsgMinidao.getProjectAbnormalDetail(dateStr);
- if (!ListUtils.isNullOrEmpty(padtolist)) {
- ArrayList<String> userIdList=new ArrayList<String>();
- for (ProjectAbnormalDetailDto dto :padtolist) {
- AttendanceWarnMsgEntity msgEntity = new AttendanceWarnMsgEntity();
- String msgContent = "";
- if (Globals.msg_type_chidao.equals(dto.getMsgtype())) {
- msgEntity.setMsgType(dto.getMsgtype());
- /*迟到总人数达 <span class= 'redWord '>10 </span>人 已达总人数的 <span class= 'redWord '>20 %</span>*/
- msgContent ="迟到总人数达 <span class= 'redWord '>"+dto.getErrorcount()+" </span>人 已达总人数的 <span class= 'redWord '>"+dto.getTotalpercent()+" %</span>";
- }
- if (Globals.msg_type_kuanggong.equals(dto.getMsgtype())) {
- msgEntity.setMsgType(dto.getMsgtype());
- /*旷工总人数达 <span class= 'redWord '>5 </span>人 已达总人数的 <span class= 'redWord '>10 %</span>*/
- msgContent ="旷工总人数达 <span class= 'redWord '>"+dto.getErrorcount()+" </span>人 已达总人数的 <span class= 'redWord '>"+dto.getTotalpercent()+" %</span>";
- }
- if (Globals.msg_type_zaotui.equals(dto.getMsgtype())) {
- msgEntity.setMsgType(dto.getMsgtype());
- /*早退总人数达 <span class= 'redWord '>10 </span>人 已达总人数的 <span class= 'redWord '>20 %</span>*/
- msgContent ="早退总人数达 <span class= 'redWord '>"+dto.getErrorcount()+" </span>人 已达总人数的 <span class= 'redWord '>"+dto.getTotalpercent()+" %</span>";
- }
-
- if (Globals.msg_type_weidaka.equals(dto.getMsgtype())) {
- msgEntity.setMsgType(dto.getMsgtype());
- /*早退总人数达 <span class= 'redWord '>10 </span>人 已达总人数的 <span class= 'redWord '>20 %</span>*/
- msgContent ="未打卡总人数达 <span class= 'redWord '>"+dto.getErrorcount()+" </span>人 已达总人数的 <span class= 'redWord '>"+dto.getTotalpercent()+" %</span>";
- }
-
- if (oConvertUtils.isNotEmpty(msgEntity.getMsgType())) {
- String projectname = "";
- if (oConvertUtils.isNotEmpty(oConvertUtils.getString(dto.getPid()))) {
- TSDepart depart = commonService.get(TSDepart.class, dto.getPid());
- if (null!=depart) {
- projectname =depart.getDepartname();
- }
- }
- msgEntity.setMsgContent(msgContent);
- msgEntity.setOrgId(dto.getPid());
- msgEntity.setMsgTitle(projectname);
- msgEntity.setSendTime(date);
- msgEntity.setCreateDate(new Date());
-
- CriteriaQuery cq = new CriteriaQuery(AttendanceWarnMsgEntity.class);
- cq.eq("orgId", msgEntity.getOrgId());
- cq.add();
- cq.isNull("userId");
- cq.add();
- cq.eq("msgContent", msgEntity.getMsgContent());
- cq.add();
- List<AttendanceWarnMsgEntity> msglist = commonService.getListByCriteriaQuery( cq, false);
- if (ListUtils.isNullOrEmpty(msglist)) {
- commonService.save(msgEntity);
-
- HashSet<String> useridHashSet = new HashSet<String>();
- List<AttendanceWarnMsgDto> msgDtolist = new ArrayList<AttendanceWarnMsgDto>();
- //将msg 发送给系统的人事部人员 和管理层人员
- List<AttendanceWarnMsgDto> attendanceWarnMsgDtolist = attendanceWarnMsgMinidao.getAllLeaderUserIdList();
- if (null==attendanceWarnMsgDtolist) {
- attendanceWarnMsgDtolist = new ArrayList<AttendanceWarnMsgDto>();
- }
- for (AttendanceWarnMsgDto msgDto: attendanceWarnMsgDtolist) {
- if (useridHashSet.contains(msgDto.getUserId())) {
- }else {
- msgDtolist.add(msgDto);
- useridHashSet.add(msgDto.getUserId());
- }
- }
- //将msg 发送给区域管理人员
- String orgid = msgEntity.getOrgId();
- // 查询当前员工的区域组织机构
- TSDepart tsDepart = getQyDepartByorgid(orgid);
- if (oConvertUtils.isEmpty(tsDepart)||oConvertUtils.isEmpty(tsDepart.getId())) {
- } else{
- //根据departid 查询该区域的区域总经理
- List<AttendanceWarnMsgDto> attendanceWarnMsgDtos= attendanceWarnMsgMinidao.getAllQYJLUserIdListByOrgid(tsDepart.getId());
- for (AttendanceWarnMsgDto msgDto: attendanceWarnMsgDtos) {
- if (useridHashSet.contains(msgDto.getUserId())) {
- }else {
- msgDtolist.add(msgDto);
- useridHashSet.add(msgDto.getUserId());
- }
- }
- }
- List<AttendanceWarnMsgDetailEntity> msgdetaillist = new ArrayList<>();
- if (!ListUtils.isNullOrEmpty(msgDtolist)) {
- for (AttendanceWarnMsgDto msgDto : msgDtolist) {
- AttendanceWarnMsgDetailEntity detailEntity = new AttendanceWarnMsgDetailEntity();
- detailEntity.setMsgId(msgEntity.getId());
- detailEntity.setReceivedId(msgDto.getUserId());
- detailEntity.setReadStatus(Globals.read_status_0);
- msgdetaillist.add(detailEntity);
- userIdList.add(msgDto.getUserId());
- }
- commonService.batchSave(msgdetaillist);
- }
- }
- }
- }
- HashSet<String> hashSet = new HashSet<String>(userIdList);
- userIdList.clear();
- userIdList.addAll(hashSet);
-
- // 根据用户userIdList和消息具体类型批量推送
- pushProcessor.pushCommon(userIdList, Globals.msg_type_3);
- }
- }
-
- /**
- * 获取区域
- *
- * @param orgid
- * @return
- */
- private TSDepart getQyDepartByorgid(String orgid) {
- TSDepart tsDepart = commonService.get(TSDepart.class, orgid);
- if (tsDepart.getOrgType().equals(Globals.org_type_4)) {
- return tsDepart;
- } else {
- TSDepart parentdepart = tsDepart.getTSPDepart();
- if (oConvertUtils.isEmpty(parentdepart)||oConvertUtils.isEmpty(parentdepart.getId())) {
- return null;
- } else {
- return getQyDepartByorgid(tsDepart.getTSPDepart().getId());
- }
- }
- }
-
-
-
- }
|