diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventAfterTaskImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventAfterTaskImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..d18a81c09af36cafb97ca2d59048cf3fc38b9e46 --- /dev/null +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventAfterTaskImpl.java @@ -0,0 +1,173 @@ +package com.mortals.xhx.daemon.task; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.PageUtil; +import cn.hutool.core.util.StrUtil; +import com.mortals.framework.common.Rest; +import com.mortals.framework.exception.AppException; +import com.mortals.framework.model.Context; +import com.mortals.framework.service.ITask; +import com.mortals.framework.service.ITaskExcuteService; +import com.mortals.framework.util.DateUtils; +import com.mortals.xhx.base.system.user.model.UserEntity; +import com.mortals.xhx.common.code.YesNoEnum; +import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity; +import com.mortals.xhx.module.attendance.model.AttendanceRecordHikQuery; +import com.mortals.xhx.module.attendance.service.AttendanceRecordHikService; +import com.mortals.xhx.module.hik.door.model.req.door.DoorEventReq; +import com.mortals.xhx.module.hik.door.model.rsp.door.DoorEventDataInfo; +import com.mortals.xhx.module.hik.door.service.IHikDoorService; +import com.mortals.xhx.module.staff.model.StaffEntity; +import com.mortals.xhx.module.staff.service.StaffService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 鍚屾鑾峰彇涓嬪崍娴峰悍闂ㄧ浜嬩欢 + */ +@Slf4j +@Service("SyncDoorsEventAfterTask") +public class SyncDoorsEventAfterTaskImpl implements ITaskExcuteService { + + @Autowired + private AttendanceRecordHikService recordHikService; + + @Autowired + private StaffService staffService; + + @Autowired + private IHikDoorService hikDoorService; + + + @Override + public void excuteTask(ITask task) throws AppException { + syncDoorEvents(); + + calculateAttendByDay(); + } + + private void calculateAttendByDay() { + Context context = new Context(); + UserEntity userEntity = new UserEntity(); + userEntity.setCreateUserId(1L); + userEntity.setCreateUserName("system"); + userEntity.setCreateTime(new Date()); + context.setUser(userEntity); + AttendanceRecordHikQuery recordHikEntity = new AttendanceRecordHikQuery(); + + // Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate(); + // recordHikEntity.setAttendanceDateStart(DateUtils.getCurrStrDate()); + recordHikEntity.setAttendanceDateStart(DateUtil.offsetHour(new Date(), -5).toString()); + recordHikEntity.setAttendanceDateEnd(DateUtils.getCurrStrDate()); + try { + recordHikService.addAttendanceRecordByQuery(recordHikEntity, context); + } catch (Exception e) { + log.error("璁$畻鑰冨嫟寮傚父", e); + } + } + + private void syncDoorEvents() { + DoorEventReq doorEventReq = new DoorEventReq(); + List<Integer> eventTypes = new ArrayList<>(); + eventTypes.add(196885); + eventTypes.add(196887); + eventTypes.add(196893); + eventTypes.add(196888); + eventTypes.add(196889); + eventTypes.add(196890); + eventTypes.add(196891); + doorEventReq.setEventTypes(eventTypes); + // 鑾峰彇褰撳ぉ鐨勫紑濮嬫椂闂� + Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate(); + // Date todayStart = DateUtil.beginOfDay(new Date()); + // 鑾峰彇褰撳ぉ鐨勭粨鏉熸椂闂� + Date todayEnd = DateUtil.endOfDay(new Date()); + doorEventReq.setStartTime(todayStart); + doorEventReq.setEndTime(todayEnd); + doorEventReq.setPageNo(1); + doorEventReq.setPageSize(1); + + Rest<DoorEventDataInfo> doorEventsRest = hikDoorService.getDoorEvents(doorEventReq); + log.info("doorEventsRest:{} msg:{}", doorEventsRest.getCode(), doorEventsRest.getMsg()); + if (doorEventsRest.getCode() == YesNoEnum.YES.getValue()) { + //鍒嗛〉鑾峰彇鑰冨嫟鏁版嵁 + Integer total = doorEventsRest.getData().getTotal(); + int pageCount = PageUtil.totalPage(total, 1000); + for (int i = 1; i <= pageCount; i++) { + doorEventReq.setPageNo(i); + doorEventReq.setPageSize(1000); + doorEventsRest = hikDoorService.getDoorEvents(doorEventReq); + log.info("doorEventsRest:{} msg:{},page:{}", doorEventsRest.getCode(), doorEventsRest.getMsg(), doorEventReq.getPageNo()); + getDoorEvents(doorEventsRest); + } + } + } + + private void getDoorEvents(Rest<DoorEventDataInfo> doorEventsRest) { + //鍚屾褰撳墠鑰冨嫟鏁版嵁 + List<AttendanceRecordHikEntity> attRecords = doorEventsRest.getData().getList().stream().map(item -> { + AttendanceRecordHikEntity recordHikEntity = new AttendanceRecordHikEntity(); + recordHikEntity.initAttrValue(); + StaffEntity staffCache = staffService.getExtCache(StrUtil.padPre(item.getJobNo(), 8, "0")); + if (ObjectUtils.isEmpty(staffCache)) { + log.info("staff is null !staffCode:{}", item.getJobNo()); + return null; + } + + recordHikEntity.setStaffId(staffCache.getId()); + recordHikEntity.setStaffName(staffCache.getName()); + recordHikEntity.setWorkNum(staffCache.getWorkNum()); + recordHikEntity.setDeptId(staffCache.getDeptId()); + recordHikEntity.setDeptName(staffCache.getDeptName()); + recordHikEntity.setPositionId(staffCache.getPositionId()); + recordHikEntity.setPositionName(staffCache.getPositionName()); + + recordHikEntity.setAttendanceDate(item.getEventTime()); + recordHikEntity.setAttendanceAddress(item.getDoorName()); + recordHikEntity.setEventSource("闂ㄧ鐐�"); + recordHikEntity.setRemark(item.getEventId()); + recordHikEntity.setCreateTime(new Date()); + recordHikEntity.setCreateUserName("绯荤粺绠$悊鍛�"); + recordHikEntity.setCreateUserId(1L); + return recordHikEntity; + }).filter(f -> f != null).collect(Collectors.toList()); + log.info("attRecords size:{}", attRecords.size()); + List<String> eventIds = attRecords.parallelStream().filter(f -> !ObjectUtils.isEmpty(f) && !ObjectUtils.isEmpty(f.getRemark())).map(i -> i.getRemark()).collect(Collectors.toList()); + + //鏌ヨ褰撳ぉ鑰冨嫟璁板綍鏄惁鏈夐噸澶嶇殑 鏈夌殑 鍒欎笉娣诲姞 + AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery(); + recordHikQuery.setAttendanceDateStart(DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd")); + recordHikQuery.setAttendanceDateEnd(DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd")); + recordHikQuery.setRemarkList(eventIds); + Set<String> eventIdSet = recordHikService.find(recordHikQuery).parallelStream().map(i -> i.getRemark()).collect(Collectors.toSet()); + + //鍘婚噸 鏃跺垎绉掓墦鍗$殑 涔熻鍘绘帀閲嶅銆� + List<AttendanceRecordHikEntity> saveRecordList = attRecords.stream().filter(f -> !eventIdSet.contains(f.getRemark())).collect(Collectors.toList()); + if (!ObjectUtils.isEmpty(saveRecordList)) { + //鍗曚釜鎻掑叆 鍘绘帀閲嶅鏃堕棿娈电殑鎵撳崱璁板綍 + for (AttendanceRecordHikEntity recordHikEntity : saveRecordList) { + try { + recordHikService.save(recordHikEntity); + } catch (Exception e) { + log.error("鍩虹鑰冨嫟鏁版嵁淇濆瓨寮傚父", e.getMessage()); + } + } + // recordHikService.save(saveRecordList); + } + log.info("saveRecordList size:{}", saveRecordList.size()); + } + + + @Override + public void stopTask(ITask task) throws AppException { + + } +} diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventTaskImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventTaskImpl.java index 98cd55081a3cdf565f7e18c095e8e7549e9bda32..28484dce2ce772e7900012df415ad9620d99c5bd 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventTaskImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncDoorsEventTaskImpl.java @@ -1,11 +1,8 @@ package com.mortals.xhx.daemon.task; -import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.PageUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.mortals.framework.common.Rest; import com.mortals.framework.exception.AppException; import com.mortals.framework.model.Context; @@ -23,12 +20,10 @@ import com.mortals.xhx.module.hik.door.service.IHikDoorService; import com.mortals.xhx.module.staff.model.StaffEntity; import com.mortals.xhx.module.staff.service.StaffService; import lombok.extern.slf4j.Slf4j; -import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; -import java.time.Year; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -68,12 +63,12 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { context.setUser(userEntity); AttendanceRecordHikQuery recordHikEntity = new AttendanceRecordHikQuery(); - // Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate(); - // recordHikEntity.setAttendanceDateStart(DateUtils.getCurrStrDate()); + // Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate(); + // recordHikEntity.setAttendanceDateStart(DateUtils.getCurrStrDate()); recordHikEntity.setAttendanceDateStart(DateUtil.offsetHour(new Date(), -5).toString()); recordHikEntity.setAttendanceDateEnd(DateUtils.getCurrStrDate()); try { - recordHikService.addAttendanceRecord(recordHikEntity, context); + recordHikService.addAttendanceRecordByQuery(recordHikEntity, context); } catch (Exception e) { log.error("璁$畻鑰冨嫟寮傚父", e); } @@ -92,7 +87,7 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { doorEventReq.setEventTypes(eventTypes); // 鑾峰彇褰撳ぉ鐨勫紑濮嬫椂闂� Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate(); - // Date todayStart = DateUtil.beginOfDay(new Date()); + // Date todayStart = DateUtil.beginOfDay(new Date()); // 鑾峰彇褰撳ぉ鐨勭粨鏉熸椂闂� Date todayEnd = DateUtil.endOfDay(new Date()); doorEventReq.setStartTime(todayStart); @@ -123,7 +118,7 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { recordHikEntity.initAttrValue(); StaffEntity staffCache = staffService.getExtCache(StrUtil.padPre(item.getJobNo(), 8, "0")); if (ObjectUtils.isEmpty(staffCache)) { - log.info("staff is null !staffCode:{}",item.getJobNo()); + log.info("staff is null !staffCode:{}", item.getJobNo()); return null; } @@ -140,13 +135,11 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { recordHikEntity.setEventSource("闂ㄧ鐐�"); recordHikEntity.setRemark(item.getEventId()); recordHikEntity.setCreateTime(new Date()); - recordHikEntity.setCreateUserName("system"); + recordHikEntity.setCreateUserName("绯荤粺绠$悊鍛�"); recordHikEntity.setCreateUserId(1L); return recordHikEntity; - }).filter(f->f!=null).collect(Collectors.toList()); - + }).filter(f -> f != null).collect(Collectors.toList()); log.info("attRecords size:{}", attRecords.size()); - List<String> eventIds = attRecords.parallelStream().filter(f -> !ObjectUtils.isEmpty(f) && !ObjectUtils.isEmpty(f.getRemark())).map(i -> i.getRemark()).collect(Collectors.toList()); //鏌ヨ褰撳ぉ鑰冨嫟璁板綍鏄惁鏈夐噸澶嶇殑 鏈夌殑 鍒欎笉娣诲姞 @@ -156,9 +149,18 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { recordHikQuery.setRemarkList(eventIds); Set<String> eventIdSet = recordHikService.find(recordHikQuery).parallelStream().map(i -> i.getRemark()).collect(Collectors.toSet()); + //鍘婚噸 鏃跺垎绉掓墦鍗$殑 涔熻鍘绘帀閲嶅銆� List<AttendanceRecordHikEntity> saveRecordList = attRecords.stream().filter(f -> !eventIdSet.contains(f.getRemark())).collect(Collectors.toList()); if (!ObjectUtils.isEmpty(saveRecordList)) { - recordHikService.save(saveRecordList); + //鍗曚釜鎻掑叆 鍘绘帀閲嶅鏃堕棿娈电殑鎵撳崱璁板綍 + for (AttendanceRecordHikEntity recordHikEntity : saveRecordList) { + try { + recordHikService.save(recordHikEntity); + } catch (Exception e) { + log.error("鍩虹鑰冨嫟鏁版嵁淇濆瓨寮傚父", e.getMessage()); + } + } + // recordHikService.save(saveRecordList); } log.info("saveRecordList size:{}", saveRecordList.size()); } @@ -168,20 +170,4 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { public void stopTask(ITask task) throws AppException { } - - public static void main(String[] args) { - // 鑾峰彇褰撳墠鏃堕棿鐨勫皬鏃舵暟 - int hour = DateUtil.hour(new Date(), true); - // 鑾峰彇褰撳墠鏃堕棿鎵€鍦ㄥ皬鏃剁殑寮€濮嬫椂闂村拰缁撴潫鏃堕棿 - Date startTime = DateUtil.beginOfHour(new Date()); - Date endTime = DateUtil.endOfHour(new Date()); - - // 鏍煎紡鍖栨椂闂翠负鎸囧畾鏍煎紡 - String startTimeStr = DateUtil.format(startTime, "yyyy-MM-dd HH:00:00"); - String endTimeStr = DateUtil.format(endTime, "yyyy-MM-dd HH:59:59"); - - // 杈撳嚭缁撴灉 - System.out.println("褰撳墠鏃堕棿鎵€鍦ㄥ皬鏃剁殑寮€濮嬫椂闂达細" + startTimeStr); - System.out.println("褰撳墠鏃堕棿鎵€鍦ㄥ皬鏃剁殑缁撴潫鏃堕棿锛�" + endTimeStr); - } } diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dingmsg/api/DingMessageController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dingmsg/api/DingMessageController.java index d9a84d9c426fd304b6e832fca32ecdde5304314f..3315174a9c11b7877305004a2e5010199d3a7c32 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dingmsg/api/DingMessageController.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/dingmsg/api/DingMessageController.java @@ -20,6 +20,9 @@ import com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordEntity; import com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordQuery; import com.mortals.xhx.module.attendance.service.AttendanceLeaveRecordService; import com.mortals.xhx.module.dingding.personal.service.IDingPersonService; +import com.mortals.xhx.module.staff.model.StaffEntity; +import com.mortals.xhx.module.staff.model.StaffQuery; +import com.mortals.xhx.module.staff.service.StaffService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.logging.Log; import org.apache.poi.ss.formula.functions.T; @@ -54,7 +57,8 @@ public class DingMessageController { private IDingPersonService dingPersonService; @Autowired private AttendanceLeaveRecordService attendanceLeaveRecordService; - + @Autowired + private StaffService staffService; /** * appKey @@ -109,149 +113,170 @@ public class DingMessageController { AttendanceLeaveRecordEntity leaveRecordEntity = new AttendanceLeaveRecordEntity(); leaveRecordEntity.initAttrValue(); leaveRecordEntity.setRemark(processInstanceId); //灏嗛拤閽夌殑浜嬬墿id浣滀负澶囨敞濉叆鏁版嵁搴� - leaveRecordEntity.setLeavePersonId(Long.parseLong(result.getOriginatorUserId())); - leaveRecordEntity.setLeavePerson(result.getTitle().substring(0,result.getTitle().indexOf("鎻愪氦"))); - leaveRecordEntity.setDeptId(Long.parseLong(result.getOriginatorDeptId())); - leaveRecordEntity.setDeptName(result.getOriginatorDeptName()); + Rest<String> mobileRest = dingPersonService.getPersonById(result.getOriginatorUserId()); + if(mobileRest.getCode() == Rest.SUCCESS) { + String mobile = mobileRest.getData(); + StaffEntity staffEntity = staffService.selectOne(new StaffQuery().phoneNumber(mobile)); + if(!ObjectUtils.isEmpty(staffEntity)){ + + leaveRecordEntity.setLeavePersonId(staffEntity.getId()); + leaveRecordEntity.setLeavePerson(staffEntity.getName()); + leaveRecordEntity.setDeptId(staffEntity.getDeptId()); + leaveRecordEntity.setDeptName(staffEntity.getDeptName()); + leaveRecordEntity.setPhoneNumber(staffEntity.getPhoneNumber()); + + if(result.getTasks().size() >0 ){ + Date startTime = dateFormat(result.getTasks().get(0).getCreateTime()); + + Date endTime = dateFormat(result.getTasks().get(0).getFinishTime()); + leaveRecordEntity.setStartTime(startTime); + leaveRecordEntity.setEndTime(endTime); + leaveRecordEntity.setDuration((int) ((endTime.getTime() - startTime.getTime())/1000)); + } + if(result.getFormComponentValues().size() > 0 ){ + JSONArray jsonArray = JSONArray.parseArray(result.getFormComponentValues().get(0).getValue()); + if(jsonArray.size() > 0){ + Date startTime1 = dateFormat(jsonArray.get(0).toString()); + leaveRecordEntity.setStartTime(startTime1); + } + if(jsonArray.size() > 1){ + Date endTime1 = dateFormat(jsonArray.get(1).toString()); + leaveRecordEntity.setEndTime(endTime1); + } + if(jsonArray.size() > 2){ + leaveRecordEntity.setDuration((int) (Float.parseFloat(jsonArray.get(2).toString())*60*60)); + } + if(jsonArray.size() > 4){ + switch (jsonArray.get(4).toString()){ + case "璋冧紤": + leaveRecordEntity.setLeaveType(2); + break; + case "鐥呭亣": + leaveRecordEntity.setLeaveType(3); + break; + case "骞村亣": + leaveRecordEntity.setLeaveType(4); + break; + case "浜у亣": + leaveRecordEntity.setLeaveType(5); + break; + case "闄骇鍋�": + leaveRecordEntity.setLeaveType(6); + break; + case "濠氬亣": + leaveRecordEntity.setLeaveType(7); + break; + case "渚嬪亣": + leaveRecordEntity.setLeaveType(8); + break; + case "鍝轰钩鍋�": + leaveRecordEntity.setLeaveType(9); + break; + case "涓у亣": + leaveRecordEntity.setLeaveType(10); + break; + case "鍥炲崟浣�": + leaveRecordEntity.setLeaveType(11); + break; + case "鍥犲叕璇峰亣": + leaveRecordEntity.setLeaveType(12); + break; + case "澶栧嚭鍕橀獙": + leaveRecordEntity.setLeaveType(13); + break; + case "鍊肩彮琛ョ彮": + leaveRecordEntity.setLeaveType(14); + break; + case "浣撴": + leaveRecordEntity.setLeaveType(15); + break; + case "闅旂": + leaveRecordEntity.setLeaveType(16); + break; + case "鍥犲叕澶栧嚭": + leaveRecordEntity.setLeaveType(17); + break; + case "鍏紤": + leaveRecordEntity.setLeaveType(18); + break; + case "鑲插効鍋�": + leaveRecordEntity.setLeaveType(19); + break; + case "璋冨洖鍗曚綅": + leaveRecordEntity.setLeaveType(20); + break; + case "鎺翰鍋�": + leaveRecordEntity.setLeaveType(21); + break; + default: + leaveRecordEntity.setLeaveType(1); //榛樿浜嬪亣 + break; + + } + + } + + } else if (result.getFormComponentValues().size() > 1) { //璇峰亣鐞嗙敱 + GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultFormComponentValues resonEntity = result.getFormComponentValues().get(1); + if(resonEntity.getName().equals("璇峰亣浜嬬敱")){ + leaveRecordEntity.setReason(resonEntity.getValue()); + } + }else if (result.getFormComponentValues().size() > 2) { //涓婁紶鐨勯檮浠� + GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultFormComponentValues picEntity = result.getFormComponentValues().get(2); + if(picEntity.getName().equals("鍥剧墖") && picEntity.getValue() != null){ + leaveRecordEntity.setReason(picEntity.getValue()); + } + } - if(result.getTasks().size() >0 ){ - Date startTime = dateFormat(result.getTasks().get(0).getCreateTime()); - Date endTime = dateFormat(result.getTasks().get(0).getFinishTime()); - leaveRecordEntity.setStartTime(startTime); - leaveRecordEntity.setEndTime(endTime); - leaveRecordEntity.setDuration((int) ((endTime.getTime() - startTime.getTime())/1000)); - } - if(result.getFormComponentValues().size() > 0 ){ - JSONArray jsonArray = JSONArray.parseArray(result.getFormComponentValues().get(0).getValue()); - if(jsonArray.size() > 0){ - Date startTime1 = dateFormat(jsonArray.get(0).toString()); - leaveRecordEntity.setStartTime(startTime1); - } - if(jsonArray.size() > 1){ - Date endTime1 = dateFormat(jsonArray.get(1).toString()); - leaveRecordEntity.setEndTime(endTime1); - } - if(jsonArray.size() > 2){ - leaveRecordEntity.setDuration((int) (Float.parseFloat(jsonArray.get(2).toString())*60*60)); - } - if(jsonArray.size() > 4){ - switch (jsonArray.get(4).toString()){ - case "璋冧紤": - leaveRecordEntity.setLeaveType(2); - break; - case "鐥呭亣": - leaveRecordEntity.setLeaveType(3); - break; - case "骞村亣": - leaveRecordEntity.setLeaveType(4); - break; - case "浜у亣": - leaveRecordEntity.setLeaveType(5); - break; - case "闄骇鍋�": - leaveRecordEntity.setLeaveType(6); - break; - case "濠氬亣": - leaveRecordEntity.setLeaveType(7); - break; - case "渚嬪亣": - leaveRecordEntity.setLeaveType(8); - break; - case "鍝轰钩鍋�": - leaveRecordEntity.setLeaveType(9); - break; - case "涓у亣": - leaveRecordEntity.setLeaveType(10); - break; - case "鍥炲崟浣�": - leaveRecordEntity.setLeaveType(11); - break; - case "鍥犲叕璇峰亣": - leaveRecordEntity.setLeaveType(12); - break; - case "澶栧嚭鍕橀獙": - leaveRecordEntity.setLeaveType(13); - break; - case "鍊肩彮琛ョ彮": - leaveRecordEntity.setLeaveType(14); - break; - case "浣撴": - leaveRecordEntity.setLeaveType(15); - break; - case "闅旂": - leaveRecordEntity.setLeaveType(16); - break; - case "鍥犲叕澶栧嚭": - leaveRecordEntity.setLeaveType(17); - break; - case "鍏紤": - leaveRecordEntity.setLeaveType(18); - break; - case "鑲插効鍋�": - leaveRecordEntity.setLeaveType(19); - break; - case "璋冨洖鍗曚綅": - leaveRecordEntity.setLeaveType(20); - break; - case "鎺翰鍋�": - leaveRecordEntity.setLeaveType(21); - break; - default: - leaveRecordEntity.setLeaveType(1); //榛樿浜嬪亣 - break; + if(result.getStatus().compareToIgnoreCase("NEW") == 0 || result.getStatus().compareToIgnoreCase("RUNNING") == 0){ + leaveRecordEntity.setProcessStatus(1); + }else if(result.getStatus().compareToIgnoreCase("COMPLETED") == 0 || result.getStatus().compareToIgnoreCase("CANCELED") == 0 + || result.getStatus().compareToIgnoreCase("TERMINATED") == 0){ + leaveRecordEntity.setProcessStatus(2); + } + if(result.getResult().compareToIgnoreCase("AGREE") == 0){ + leaveRecordEntity.setAuditResult(1); + }else { + leaveRecordEntity.setAuditResult(2); } - } + log.info("閽夐拤杩斿洖鐨剅esult:"+result.getResult()+"\nauditresult:"+leaveRecordEntity.getAuditResult()); + leaveRecordEntity.setAuditDesc(result.getOperationRecords().get(0).getRemark()); - } else if (result.getFormComponentValues().size() > 1) { //璇峰亣鐞嗙敱 - GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultFormComponentValues resonEntity = result.getFormComponentValues().get(1); - if(resonEntity.getName().equals("璇峰亣浜嬬敱")){ - leaveRecordEntity.setReason(resonEntity.getValue()); - } - }else if (result.getFormComponentValues().size() > 2) { //涓婁紶鐨勯檮浠� - GetProcessInstanceResponseBody.GetProcessInstanceResponseBodyResultFormComponentValues picEntity = result.getFormComponentValues().get(2); - if(picEntity.getName().equals("鍥剧墖") && picEntity.getValue() != null){ - leaveRecordEntity.setReason(picEntity.getValue()); - } - } + AttendanceLeaveRecordEntity recordEntity = attendanceLeaveRecordService.selectOne(new AttendanceLeaveRecordQuery().remark(processInstanceId)); + if(ObjectUtils.isEmpty(recordEntity)){ + leaveRecordEntity.setCreateTime(new Date()); + leaveRecordEntity.setCreateUserId(1L); + attendanceLeaveRecordService.save(leaveRecordEntity); + }else{ + leaveRecordEntity.setId(recordEntity.getId()); - if(result.getStatus().compareToIgnoreCase("NEW") == 0 || result.getStatus().compareToIgnoreCase("RUNNING") == 0){ - leaveRecordEntity.setProcessStatus(1); - }else if(result.getStatus().compareToIgnoreCase("COMPLETED") == 0 || result.getStatus().compareToIgnoreCase("CANCELED") == 0 - || result.getStatus().compareToIgnoreCase("TERMINATED") == 0){ - leaveRecordEntity.setProcessStatus(2); - } + leaveRecordEntity.setUpdateUserId(1L); + leaveRecordEntity.setUpdateTime(new Date()); - if(result.getResult().compareToIgnoreCase("AGREE") == 0){ - leaveRecordEntity.setAuditResult(1); - }else { - leaveRecordEntity.setAuditResult(2); - } + attendanceLeaveRecordService.update(leaveRecordEntity); + } - log.info("閽夐拤杩斿洖鐨剅esult:"+result.getResult()+"\nauditresult:"+leaveRecordEntity.getAuditResult()); - leaveRecordEntity.setAuditDesc(result.getOperationRecords().get(0).getRemark()); - AttendanceLeaveRecordEntity recordEntity = attendanceLeaveRecordService.selectOne(new AttendanceLeaveRecordQuery().remark(processInstanceId)); - if(ObjectUtils.isEmpty(recordEntity)){ - leaveRecordEntity.setCreateTime(new Date()); - leaveRecordEntity.setCreateUserId(1L); - attendanceLeaveRecordService.save(leaveRecordEntity); - }else{ - leaveRecordEntity.setId(recordEntity.getId()); + }else { + log.info("璇ュ彿鐮�("+mobile +")鏈湪鏈郴缁熺粦瀹�"); + } - leaveRecordEntity.setUpdateUserId(1L); - leaveRecordEntity.setUpdateTime(new Date()); - attendanceLeaveRecordService.update(leaveRecordEntity); + }else { + log.info("鏍规嵁id鍦ㄩ拤閽夊钩鍙版煡璇㈢數璇濆け璐�"+mobileRest.getMsg()); } + + + } } diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/AttendanceStatEntity.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/AttendanceStatEntity.java index a3af6b0c39a6ea3dec0a462adebe5dad38b13229..5da417ebac985c1d5e47084f604c297149e2f9f3 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/AttendanceStatEntity.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/AttendanceStatEntity.java @@ -1,7 +1,10 @@ package com.mortals.xhx.module.attendance.model; import java.math.BigDecimal; +import java.util.Date; import java.util.List; import java.util.ArrayList; + +import cn.hutool.core.date.DateUtil; import com.fasterxml.jackson.annotation.JsonFormat; import com.mortals.framework.annotation.Excel; import com.mortals.framework.model.BaseEntityLong; @@ -29,6 +32,7 @@ public class AttendanceStatEntity extends AttendanceStatVo { /** * 鍛樺伐濮撳悕 */ + @Excel(name = "鍛樺伐濮撳悕") private String staffName; /** * 鎵€灞為儴闂� @@ -37,6 +41,7 @@ public class AttendanceStatEntity extends AttendanceStatVo { /** * 鎵€灞為儴闂ㄥ悕绉� */ + @Excel(name = "閮ㄩ棬鍚嶇О") private String deptName; /** * 鍥炲崟浣嶏紙澶╋級 @@ -312,11 +317,11 @@ public class AttendanceStatEntity extends AttendanceStatVo { this.earlyLeaveMeeting = BigDecimal.valueOf(0); - this.year = -1; + this.year = DateUtil.year(new Date()); - this.month = -1; + this.month = DateUtil.month(new Date())+1; - this.day = -1; + this.day = DateUtil.dayOfMonth(new Date()); this.remark = ""; @@ -338,4 +343,8 @@ public class AttendanceStatEntity extends AttendanceStatVo { this.afternoonTimes = 0; } + + public static void main(String[] args) { + System.out.println(DateUtil.dayOfMonth(new Date())); + } } \ No newline at end of file diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceRecordHikService.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceRecordHikService.java index 86d7707df21a7eece95d49edf01dcec2b700abb8..2695e905959d4046dde999a421c5f7a867dd7dea 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceRecordHikService.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/AttendanceRecordHikService.java @@ -4,6 +4,8 @@ import com.mortals.framework.service.ICRUDService; import com.mortals.xhx.module.attendance.dao.AttendanceRecordHikDao; import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity; +import java.util.List; + /** * AttendanceRecordHikService * @@ -17,9 +19,26 @@ public interface AttendanceRecordHikService extends ICRUDService<AttendanceRecor AttendanceRecordHikDao getDao(); /** - * 灏嗗師濮嬫暟鎹鍏ユ墦鍗¤褰曡〃 - * @param entity + * 鏍规嵁鏌ヨ鏉′欢鐢熸垚鎵撳崱璁板綍 + * @param attendanceRecordHikQuery + */ + void addAttendanceRecordByQuery(AttendanceRecordHikEntity attendanceRecordHikQuery, Context context) throws Exception; + + + + /** + * 鏍规嵁鏌ヨ鏉′欢鐢熸垚鎵撳崱璁板綍 + * @param hikEntity */ - void addAttendanceRecord(AttendanceRecordHikEntity entity, Context context) throws Exception; + void addAttendanceRecord(AttendanceRecordHikEntity hikEntity, Context context) throws Exception; + + + + /** + * 鏍规嵁鏌ュ師濮嬭褰曞垪琛ㄧ敓鎴愭墦鍗¤褰� + * @param hikEntityList + */ + void addAttendanceRecordList(List<AttendanceRecordHikEntity> hikEntityList, Context context) throws Exception; + } diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java index 62f535f3aa4289655f996f7015a10280fef9b7ba..eaf45790f7a02f371f3bf7c758b5ac84512f3868 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceRecordHikServiceImpl.java @@ -6,6 +6,7 @@ import com.mortals.framework.service.IUser; import com.mortals.framework.util.StringUtils; import com.mortals.xhx.base.system.upload.service.UploadService; import com.mortals.xhx.common.code.*; +import com.mortals.xhx.common.utils.BeanUtil; import com.mortals.xhx.module.attendance.model.*; import com.mortals.xhx.module.attendance.service.*; import com.mortals.xhx.module.dept.service.DeptService; @@ -14,6 +15,7 @@ import com.mortals.xhx.module.staff.model.StaffQuery; import com.mortals.xhx.module.staff.service.StaffService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.time.DateUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; @@ -60,16 +62,200 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte @Autowired private AttendanceRecordErrorService errorService; + @Override - public void addAttendanceRecord(AttendanceRecordHikEntity entity, Context context) throws Exception { + public void addAttendanceRecord(AttendanceRecordHikEntity hikEntity, Context context) throws Exception { + List<AttendanceRecordHikEntity> hikEntityList = new ArrayList<>(); + addAttendanceRecordList(hikEntityList, context); + } - List<AttendanceRecordHikEntity> hikEntityList = attendanceRecordHikService.find(entity); + @Override + public void addAttendanceRecordByQuery(AttendanceRecordHikEntity attendanceRecordHikQuery, Context context) throws Exception { + List<AttendanceRecordHikEntity> hikEntityList = attendanceRecordHikService.find(attendanceRecordHikQuery); + addAttendanceRecordList(hikEntityList, context); + } + + public void addAttendanceRecordList(List<AttendanceRecordHikEntity> hikEntityList, Context context) throws Exception { //瀵硅€冨嫟鏁版嵁鏍规嵁鑰冨嫟鏃堕棿杩涜鎺掑簭 List<AttendanceRecordHikEntity> collect = hikEntityList.stream().sorted(Comparator.comparing(AttendanceRecordHikEntity::getAttendanceDate)).collect(Collectors.toList()); //鏍规嵁宸ュ彿瀵硅€冨嫟鏁版嵁杩涜鍒嗙粍 Map<String, List<AttendanceRecordHikEntity>> listMap = collect.stream().collect(Collectors.groupingBy(AttendanceRecordHikEntity::getWorkNum)); //Map<String, Map<String, List<AttendanceRecordHikEntity>>> groupMap = collect.stream().collect(Collectors.groupingBy(AttendanceRecordHikEntity::getWorkNum, Collectors.groupingBy(x -> com.mortals.framework.util.DateUtils.getDateTimeStr(x.getAttendanceDate(), "yyyy-MM-dd")))); - //map閬嶅巻.鍏堟妸鎵€鏈夐敭鍙栧嚭鏉� + for (Map.Entry<String, List<AttendanceRecordHikEntity>> itemEntry : listMap.entrySet()) { + String workNum = itemEntry.getKey(); + List<AttendanceRecordHikEntity> recordHikEntityList = itemEntry.getValue(); + //瀵规寜鐓у伐鍙峰垎缁勪簡鐨勬暟鎹畆ecordHikEntityList杩涜鏃堕棿鍒嗙粍 + // DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + Map<String, List<AttendanceRecordHikEntity>> dateRecordMap = recordHikEntityList.stream().collect(Collectors.groupingBy(hikEntity -> DateUtil.formatDate(hikEntity.getAttendanceDate()))); + for (Map.Entry<String, List<AttendanceRecordHikEntity>> dateEntry : dateRecordMap.entrySet()) { + String dateStr = dateEntry.getKey(); + List<AttendanceRecordHikEntity> attendanceRecordHikEntities = dateEntry.getValue(); + //瀵圭浉鍚屽伐鍙风殑浜哄憳杩涜閬嶅巻鍒ゆ柇鑰冨嫟瑙勫垯 + AttendanceRecordEntity attendanceRecordEntity = new AttendanceRecordEntity(); + attendanceRecordEntity.initAttrValue(); + List<AttendanceRecordDetailEntity> detailEntityList = new ArrayList<>(); + for (AttendanceRecordHikEntity item : attendanceRecordHikEntities) { + //瀵逛富琛ㄧ殑瀵硅薄杩涜璧嬪€� + attendanceRecordEntity.setStaffId(item.getStaffId()); + attendanceRecordEntity.setStaffName(item.getStaffName()); + attendanceRecordEntity.setDeptId(item.getDeptId()); + attendanceRecordEntity.setDeptName(item.getDeptName()); + attendanceRecordEntity.setPositionId(item.getPositionId()); + attendanceRecordEntity.setPositionName(item.getPositionName()); + attendanceRecordEntity.setWorkNum(item.getWorkNum()); + attendanceRecordEntity.setAttendanceDate(item.getAttendanceDate()); + attendanceRecordEntity.setCreateTime(new Date()); + attendanceRecordEntity.setCreateUserId(this.getContextUserId(context)); + //鑾峰彇鑰冨嫟鎵撳崱鏃堕棿 + Date attendanceDate = item.getAttendanceDate(); + //閫氳繃宸ュ彿鏌ヨ鍛樺伐淇℃伅 + StaffEntity staffEntity = staffService.getExtCache(StrUtil.padPre(item.getWorkNum(), 8, "0")); + if (ObjectUtils.isEmpty(staffEntity)) { + log.info("staffEntity is null ,workNum:{}", StrUtil.padPre(item.getWorkNum(), 8, "0")); + continue; + } + //閫氳繃鍛樺伐id鏌ヨ鑰冨嫟缁勪汉鍛樹俊鎭� + List<AttendanceGroupStaffEntity> attendanceGroupStaffEntities = attendanceGroupStaffService.find(new AttendanceGroupStaffQuery().staffId(staffEntity.getId())); + //鏌ヨ璇ヨ€冨嫟浜哄憳,濡傛灉鏌ュ嚭鏉ョ殑鑰冨嫟浜哄憳淇℃伅list闀垮害涓�1 鍒欒鑰冨嫟浜哄憳鍙湁涓€涓€冨嫟缁� + if (!ObjectUtils.isEmpty(attendanceGroupStaffEntities) && attendanceGroupStaffEntities.size() == 1) + checkAttendGroupByOne(attendanceRecordEntity, detailEntityList, attendanceDate, attendanceGroupStaffEntities.get(0), context); + + //濡傛灉鑰冨嫟浜哄憳淇℃伅list闀垮害澶т簬1 鍒欒鑰冨嫟浜哄憳鏈夊涓€冨嫟缁�. + if (StringUtils.isNotNull(attendanceGroupStaffEntities) && attendanceGroupStaffEntities.size() > 1) { + for (AttendanceGroupStaffEntity groupStaffEntity : attendanceGroupStaffEntities) { + //澶氳€冨嫟缁� todo 鏆傛椂鍜屽崟涓€瑕嗙洊 + checkAttendGroupByOne(attendanceRecordEntity, detailEntityList, attendanceDate, groupStaffEntity, context); + } + } + } + + //澶勭悊寮傚父鎵撳崱锛屾墍浠ュ紓甯告墦鍗$殑 閮芥柊澧炰竴鏉¤褰� + List<AttendanceRecordErrorEntity> errorEntityList = new ArrayList<>(); + for (AttendanceRecordDetailEntity recordDetailEntity : detailEntityList) { + //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //SimpleDateFormat sdft = new SimpleDateFormat("HH:mm:ss"); + Integer goWorkResult = recordDetailEntity.getGoWorkResult(); + Integer offWorkResult = recordDetailEntity.getOffWorkResult(); +//鍒ゆ柇涓婄彮 + if (GoWorkResultEnum.姝e父.getValue() != goWorkResult) { + AttendanceRecordErrorEntity errorEntity = new AttendanceRecordErrorEntity(); + BeanUtils.copyProperties(attendanceRecordEntity, errorEntity, new String[]{"id"}); + + Date goWorkDate = attendanceClassDetailService.selectOne(new AttendanceClassDetailQuery().id(recordDetailEntity.getShiftsId())).getGoWorkDate(); + errorEntity.setGoOffDateTime(goWorkDate); + + if (!ObjectUtils.isEmpty(recordDetailEntity.getGoWorkDate())) { + errorEntity.setErrorDateTime(recordDetailEntity.getGoWorkDate()); + errorEntity.setActualAttendanceDateTime(recordDetailEntity.getGoWorkDate()); + } else { + errorEntity.setErrorDateTime(goWorkDate); + } + if (GoWorkResultEnum.鏃╅€€.getValue() == recordDetailEntity.getGoWorkResult()) { + errorEntity.setErrorStatus(ErrorStatusEnum.鏃╅€€.getValue()); + } + if (GoWorkResultEnum.杩熷埌.getValue() == recordDetailEntity.getGoWorkResult()) { + errorEntity.setErrorStatus(ErrorStatusEnum.杩熷埌.getValue()); + } + if (GoWorkResultEnum.缂哄崱.getValue() == recordDetailEntity.getGoWorkResult()) { + errorEntity.setErrorStatus(ErrorStatusEnum.缂哄崱.getValue()); + } + errorEntity.setProcessStatus(YesNoEnum.NO.getValue()); + errorEntity.setCreateTime(new Date()); + errorEntity.setCreateUserId(this.getContextUserId(context)); + errorEntityList.add(errorEntity); + } + //鍒ゆ柇涓嬬彮 + if (OffWorkResultEnum.姝e父.getValue() != offWorkResult) { + AttendanceRecordErrorEntity errorEntity = new AttendanceRecordErrorEntity(); + errorEntity.initAttrValue(); + BeanUtils.copyProperties(attendanceRecordEntity, errorEntity, new String[]{"id"}); + + Date offWorkDate = attendanceClassDetailService.selectOne(new AttendanceClassDetailQuery().id(recordDetailEntity.getShiftsId())).getOffWorkDate(); + errorEntity.setGoOffDateTime(offWorkDate); + if (!ObjectUtils.isEmpty(recordDetailEntity.getGoWorkDate())) { + errorEntity.setErrorDateTime(recordDetailEntity.getGoWorkDate()); + errorEntity.setActualAttendanceDateTime(recordDetailEntity.getGoWorkDate()); + } else { + errorEntity.setErrorDateTime(offWorkDate); + } + if (OffWorkResultEnum.缂哄崱.getValue() == recordDetailEntity.getOffWorkResult()) { + errorEntity.setErrorStatus(ErrorStatusEnum.缂哄崱.getValue()); + } + if (OffWorkResultEnum.鏃╅€€.getValue() == recordDetailEntity.getOffWorkResult()) { + errorEntity.setErrorStatus(ErrorStatusEnum.鏃╅€€.getValue()); + } + if (OffWorkResultEnum.杩熷埌.getValue() == recordDetailEntity.getOffWorkResult()) { + errorEntity.setErrorStatus(ErrorStatusEnum.杩熷埌.getValue()); + } + errorEntity.setProcessStatus(YesNoEnum.NO.getValue()); + errorEntity.setCreateTime(new Date()); + errorEntity.setCreateUserId(this.getContextUserId(context)); + errorEntityList.add(errorEntity); + } + } + + if (!ObjectUtils.isEmpty(detailEntityList)) { + if (!ObjectUtils.isEmpty(detailEntityList)) { + errorService.save(errorEntityList, context); + } + attendanceRecordEntity.setShiftsName(detailEntityList.get(0).getShiftsName()); + attendanceRecordEntity.setShiftsId(detailEntityList.get(0).getShiftsId()); + attendanceRecordEntity.setAttendanceRecordDetailList(detailEntityList); + + //鍒ゆ柇绛惧埌 鍙瀛樺湪涓€娆℃甯告墦鍗¤缁嗚褰� 灏卞垽鏂鍒� + for (AttendanceRecordDetailEntity detailEntity : detailEntityList) { + if (GoWorkResultEnum.姝e父.getValue() == detailEntity.getGoWorkResult() || GoWorkResultEnum.杩熷埌.getValue() == detailEntity.getOffWorkResult()) { + attendanceRecordEntity.setSignInResult(YesNoEnum.YES.getValue()); + break; + } + } + + for (AttendanceRecordDetailEntity detailEntity : detailEntityList) { + if (OffWorkResultEnum.姝e父.getValue() == detailEntity.getOffWorkResult() || OffWorkResultEnum.鏃╅€€.getValue() == detailEntity.getOffWorkResult()) { + attendanceRecordEntity.setSignOutResult(YesNoEnum.YES.getValue()); + break; + } + } + + for (AttendanceRecordDetailEntity detailEntity : detailEntityList) { + if (OffWorkResultEnum.缂哄崱.getValue() == detailEntity.getOffWorkResult()) { + attendanceRecordEntity.setPunchResult(YesNoEnum.NO.getValue()); + break; + } + + if (OffWorkResultEnum.缂哄崱.getValue() == detailEntity.getOffWorkResult()) { + attendanceRecordEntity.setPunchResult(YesNoEnum.NO.getValue()); + break; + } + } + + if (YesNoEnum.YES.getValue() == attendanceRecordEntity.getSignInResult() && YesNoEnum.YES.getValue() == attendanceRecordEntity.getSignOutResult()) { + attendanceRecordEntity.setPunchResult(YesNoEnum.YES.getValue()); + } + + attendanceRecordEntity.setAttendType("鐜板満鎵撳崱"); + //鍒ゆ柇鏄惁瀛樺湪璁板綍 濡傛灉瀛樺湪 鍒欐洿鏂� 缁村害 staffId attendanceDate shiftsId attendanceGroupId + AttendanceRecordQuery query = new AttendanceRecordQuery(); + query.setStaffId(attendanceRecordEntity.getStaffId()); + query.setShiftsId(attendanceRecordEntity.getShiftsId()); + query.setAttendanceGroupId(attendanceRecordEntity.getAttendanceGroupId()); + query.setAttendanceDate(attendanceRecordEntity.getAttendanceDate()); + + AttendanceRecordEntity recordEntity = attendanceRecordService.selectOne(query); + if (!ObjectUtils.isEmpty(recordEntity)) { + attendanceRecordEntity.setId(recordEntity.getId()); + attendanceRecordEntity.setUpdateTime(new Date()); + attendanceRecordEntity.setUpdateUserId(this.getContextUserId(context)); + attendanceRecordService.update(attendanceRecordEntity, context); + } else { + attendanceRecordService.save(attendanceRecordEntity, context); + } + } + + } + } + + /* //map閬嶅巻.鍏堟妸鎵€鏈夐敭鍙栧嚭鏉� Set<String> workNumSet = listMap.keySet(); //鏍规嵁閿彇鍑簐alue for (String workNum : workNumSet) { @@ -119,7 +305,6 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte AttendanceGroupEntity attendanceGroupEntity = attendanceGroupService.selectOne(attendanceGroupQuery.id(attendanceGroupStaffEntities.get(0).getGroupId())); attendanceRecordEntity.setAttendanceGroupId(attendanceGroupEntity.getId()); attendanceRecordEntity.setAttendanceGroupName(attendanceGroupEntity.getGroupName()); - //log.info("attendanceGroupEntity.getId()=={}", attendanceGroupEntity.getId()); //鏌ヨ鑰冨嫟缁勮缁嗕俊鎭幏鍙栫彮娆� AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(new AttendanceGroupFixedworkQuery() @@ -455,17 +640,117 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte attendanceRecordService.save(attendanceRecordEntity, context); } } - } + }*/ + } + private void checkAttendGroupByOne(AttendanceRecordEntity attendanceRecordEntity, List<AttendanceRecordDetailEntity> detailEntityList, Date attendanceDate, AttendanceGroupStaffEntity attendanceGroupStaffEntity, Context context) { + //鏌ヨ鑰冨嫟缁� + AttendanceGroupEntity attendanceGroupEntity = attendanceGroupService.get(attendanceGroupStaffEntity.getGroupId(), context); + attendanceRecordEntity.setAttendanceGroupId(attendanceGroupEntity == null ? 0L : attendanceGroupEntity.getId()); + attendanceRecordEntity.setAttendanceGroupName(attendanceGroupEntity == null ? "" : attendanceGroupEntity.getGroupName()); + //鏌ヨ鑰冨嫟缁勮缁嗕俊鎭幏鍙栫彮娆� + AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(new AttendanceGroupFixedworkQuery() + .groupId(attendanceGroupEntity.getId())); + //鍒ゆ柇褰撳墠鑰冨嫟鏃ユ湡涓哄懆鍑� + String week = this.getWeek(attendanceDate); + //log.info("week:{}", week); + //閫氳繃鑰冨嫟鏃ユ湡鐨勬槦鏈熸嬁鍒扮彮娆d. + if (ObjectUtils.isEmpty(attendanceGroupFixedworkEntity)) { + log.info("attendanceGroupFixedworkEntity is null ! groupId:{}", attendanceGroupEntity.getId()); + return; + } + Long weekClassId = this.getWeekClassId(attendanceGroupFixedworkEntity, week); + //log.info("weekClassId:{}", weekClassId); + //weekClassId涓�-1 鍒欎笉鍦ㄨ€冨嫟 + if (weekClassId == -1L) { + //璺宠繃鏈寰幆 + return; + } + //鑾峰彇鐝淇℃伅 + AttendanceClassEntity attendanceClassEntity = attendanceClassService.get(weekClassId); + if (ObjectUtils.isEmpty(attendanceClassEntity)) { + log.info("attendanceClassEntity is null ,weekClassId:{}", weekClassId); + return; + } + //鑾峰彇鐝璇︾粏淇℃伅 + List<AttendanceClassDetailEntity> attendanceClassDetailEntities = attendanceClassDetailService.find(new AttendanceClassDetailQuery().classId(attendanceClassEntity.getId())); + Integer orderNum = 0; + //鏋勯€犳暟鎹� + if (ObjectUtils.isEmpty(detailEntityList)) { + for (AttendanceClassDetailEntity classDetailEntity : attendanceClassDetailEntities) { + orderNum++; + AttendanceRecordDetailEntity recordDetailEntity = new AttendanceRecordDetailEntity(); + recordDetailEntity.setShiftsId(classDetailEntity.getId()); + recordDetailEntity.setShiftsName(classDetailEntity.getClassName()); + recordDetailEntity.setGoWorkResult(GoWorkResultEnum.缂哄崱.getValue()); + recordDetailEntity.setOffWorkResult(GoWorkResultEnum.缂哄崱.getValue()); + recordDetailEntity.setOrderNum(orderNum); + detailEntityList.add(recordDetailEntity); + } + } + for (AttendanceClassDetailEntity classDetail : attendanceClassDetailEntities) { + //璁$畻鍖洪棿鑼冨洿 + //涓婄彮鎵撳崱鍓嶆椂闂� + Date goWorkDateBefore = DateUtil.offsetMinute(classDetail.getGoWorkDate(), -classDetail.getGoWorkDateBefore()); + //涓婄彮鎵撳崱鍚庢椂闂� + Date goWorkDateAfter = DateUtil.offsetMinute(classDetail.getGoWorkDate(), classDetail.getGoWorkDateAfter()); + // 涓嬬彮鎵撳崱鍓嶆椂闂� + Date offWorkDateBefore = DateUtil.offsetMinute(classDetail.getOffWorkDate(), -classDetail.getOffWorkDateBefore()); + //涓嬬彮鎵撳崱鍚庢椂闂� + Date offWorkDateAfter = DateUtil.offsetMinute(classDetail.getOffWorkDate(), classDetail.getOffWorkDateAfter()); + //鍒ゆ柇鑰冨嫟鏃堕棿鏄惁鍦ㄤ笂鐝墦鍗″尯闂村唴 true 鍦� false 涓嶅湪 + boolean goInTime = DateUtil.isIn(attendanceDate, goWorkDateBefore, goWorkDateAfter); + //鍒ゆ柇鑰冨嫟鏃堕棿鏄惁鍦ㄤ笅鐝墦鍗″尯闂村唴 + boolean offInTime = DateUtil.isIn(attendanceDate, offWorkDateBefore, offWorkDateAfter); + if (goInTime == false && offInTime == false) { + log.info("鑰冨嫟鏃堕棿涓嶅湪涓婄彮鍖洪棿涓庝笅鐝尯闂翠腑锛屼笉鍋氬鐞嗭紒attendDate:{}", DateUtil.formatDateTime(attendanceDate)); + continue; + } + if (goInTime) { + //濡傛灉鏄笂鐝墦鍗″尯闂磋寖鍥�,鍒ゆ柇鏄惁杩熷埌 + boolean inTime = DateUtil.isIn(attendanceDate, goWorkDateBefore, classDetail.getGoWorkDate()); + if (inTime) { + for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntityList) { + if (attendanceRecordDetailEntity.getShiftsId() == classDetail.getClassId()) { + attendanceRecordDetailEntity.setGoWorkResult(GoWorkResultEnum.姝e父.getValue()); + attendanceRecordDetailEntity.setGoWorkDate(attendanceDate); + } + } + } else { + for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntityList) { + if (attendanceRecordDetailEntity.getShiftsId() == classDetail.getClassId()) { + attendanceRecordDetailEntity.setGoWorkResult(GoWorkResultEnum.杩熷埌.getValue()); + attendanceRecordDetailEntity.setGoWorkDate(attendanceDate); + } + } + } + } + if (offInTime) { + boolean inTime = DateUtil.isIn(attendanceDate, classDetail.getOffWorkDate(), offWorkDateAfter); + if (inTime) { + for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntityList) { + if (attendanceRecordDetailEntity.getShiftsId().longValue() == classDetail.getId().longValue()) { + attendanceRecordDetailEntity.setGoWorkResult(GoWorkResultEnum.姝e父.getValue()); + attendanceRecordDetailEntity.setGoWorkDate(attendanceDate); + } + } + } else { + for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntityList) { + if (attendanceRecordDetailEntity.getShiftsId().longValue() == classDetail.getId().longValue()) { + attendanceRecordDetailEntity.setOffWorkResult(GoWorkResultEnum.鏃╅€€.getValue()); + attendanceRecordDetailEntity.setOffWorkDate(attendanceDate); + } + } + } + } } } - public String getWeek(Date date) { + public String getWeek(Date date) { // Get the day of the week (1 = Sunday, 2 = Monday, ..., 7 = Saturday) int dayOfWeek = DateUtil.dayOfWeek(date); - // Map the numeric day of the week to its corresponding Chinese name String[] dayOfWeekNames = new String[]{ "鏄熸湡鏃�", "鏄熸湡涓€", "鏄熸湡浜�", "鏄熸湡涓�", "鏄熸湡鍥�", "鏄熸湡浜�", "鏄熸湡鍏�" @@ -473,74 +758,8 @@ public class AttendanceRecordHikServiceImpl extends AbstractCRUDServiceImpl<Atte // Get the Chinese name of the day of the week String dayOfWeekName = dayOfWeekNames[dayOfWeek - 1]; return dayOfWeekName; -// -// SimpleDateFormat sdf = new SimpleDateFormat("EEEE"); -// String week = sdf.format(date); - // return week; } - /** - * 鑾峰彇閫氳繃鏄熸湡鑾峰彇鐝id 濡傛灉杩斿弬涓�-1 鍒欎笉鍦ㄨ€冨嫟 - * - * @return - */ - /* public Long getWeekClassId(AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity, String week) { - Long weekClassId = 0L; - switch (week) { - case "鏄熸湡涓€": - if (attendanceGroupFixedworkEntity.getMonday() == 0) { - weekClassId = -1L; - return weekClassId; - } - weekClassId = attendanceGroupFixedworkEntity.getMondayClassId(); - break; - case "鏄熸湡浜�": - if (attendanceGroupFixedworkEntity.getTuesday() == 0) { - weekClassId = -1L; - return weekClassId; - } - weekClassId = attendanceGroupFixedworkEntity.getTuesdayClassId(); - break; - case "鏄熸湡涓�": - if (attendanceGroupFixedworkEntity.getWednesday() == 0) { - weekClassId = -1L; - return weekClassId; - } - weekClassId = attendanceGroupFixedworkEntity.getWednesdayClassId(); - break; - case "鏄熸湡鍥�": - if (attendanceGroupFixedworkEntity.getThursday() == 0) { - weekClassId = -1L; - return weekClassId; - } - weekClassId = attendanceGroupFixedworkEntity.getThursdayClassId(); - break; - case "鏄熸湡浜�": - if (attendanceGroupFixedworkEntity.getFriday() == 0) { - weekClassId = -1L; - return weekClassId; - } - weekClassId = attendanceGroupFixedworkEntity.getFridayClassId(); - break; - case "鏄熸湡鍏�": - if (attendanceGroupFixedworkEntity.getSaturday() == 0) { - weekClassId = -1L; - return weekClassId; - } - weekClassId = attendanceGroupFixedworkEntity.getSaturdayClassId(); - break; - case "鏄熸湡鏃�": - if (attendanceGroupFixedworkEntity.getSunday() == 0) { - weekClassId = -1L; - return weekClassId; - } - weekClassId = attendanceGroupFixedworkEntity.getSundayClassId(); - break; - } - return weekClassId; - }*/ - - /** * 鑾峰彇閫氳繃鏄熸湡鑾峰彇鐝id 濡傛灉杩斿弬涓�-1 鍒欎笉鍦ㄨ€冨嫟 * diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordHikController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordHikController.java index 54f0567d7c20174164cea844464d38860dccd1d1..1e4958d6852eabed16170bbeded22abcf060cd73 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordHikController.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordHikController.java @@ -127,7 +127,7 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro if (ObjectUtils.isEmpty(hikEntity.getAttendanceDateStart())) { throw new AppException("璇烽€夋嫨寮€濮嬫棩鏈�"); } - hikService.addAttendanceRecord(hikEntity, getContext()); + hikService.addAttendanceRecordByQuery(hikEntity, getContext()); model.put("message_info", busiDesc + "鎴愬姛"); this.recordSysLog(this.request, busiDesc + " 銆愭垚鍔熴€�"); } catch (Exception e) { diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceVacationBalanceController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceVacationBalanceController.java index 12d4cc8c2db11df45ce6f5e4aa33a5d4fb900f41..4fdbb049ba417065284b07c79e6cdeab3af61fbd 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceVacationBalanceController.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceVacationBalanceController.java @@ -5,11 +5,14 @@ import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.common.code.AllHolidaysEnum; import com.mortals.xhx.module.attendance.model.AttendanceVacationBalanceEntity; import com.mortals.xhx.module.attendance.service.AttendanceVacationBalanceService; +import com.mortals.xhx.module.dept.model.DeptQuery; +import com.mortals.xhx.module.dept.service.DeptService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Map; +import java.util.stream.Collectors; /** * @@ -25,6 +28,9 @@ public class AttendanceVacationBalanceController extends BaseCRUDJsonBodyMapping @Autowired private ParamService paramService; + @Autowired + private DeptService deptService; + public AttendanceVacationBalanceController(){ super.setModuleDesc( "鍛樺伐鍋囨湡浣欓淇℃伅"); @@ -33,6 +39,7 @@ public class AttendanceVacationBalanceController extends BaseCRUDJsonBodyMapping @Override protected void init(Map<String, Object> model, Context context) { this.addDict(model,"AllHolidays",AllHolidaysEnum.getEnumMap()); + this.addDict(model, "deptId", deptService.find(new DeptQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getDeptName()))); super.init(model, context); } diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/model/DeptPerformStatEntity.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/model/DeptPerformStatEntity.java index 362183fe50bc018dd7248d1b31d837ea47f694ac..95e3b4945d550df5a6f1d8cd790d13b1f2861c0a 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/model/DeptPerformStatEntity.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/model/DeptPerformStatEntity.java @@ -1,117 +1,115 @@ package com.mortals.xhx.module.dept.model; import java.math.BigDecimal; -import java.util.List; -import java.util.ArrayList; -import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import cn.hutool.core.date.DateUtil; import com.mortals.framework.annotation.Excel; -import com.mortals.framework.model.BaseEntityLong; import com.mortals.xhx.module.dept.model.vo.DeptPerformStatVo; import lombok.Data; /** -* 閮ㄩ棬缁╂晥鍒嗘暟缁熻瀹炰綋瀵硅薄 -* -* @author zxfei -* @date 2023-07-14 -*/ + * 閮ㄩ棬缁╂晥鍒嗘暟缁熻瀹炰綋瀵硅薄 + * + * @author zxfei + * @date 2023-07-20 + */ @Data public class DeptPerformStatEntity extends DeptPerformStatVo { private static final long serialVersionUID = 1L; /** - * 閮ㄩ棬id鍙� - */ + * 閮ㄩ棬id鍙� + */ private Long deptId; /** - * 閮ㄩ棬鍚嶇О - */ + * 閮ㄩ棬鍚嶇О + */ private String deptName; /** - * 閮ㄩ棬缁╂晥鎬诲垎鏁� - */ + * 閮ㄩ棬缁╂晥鎬诲垎鏁� + */ @Excel(name = "閮ㄩ棬缁╂晥鎬诲垎鏁�") private BigDecimal totalScore; /** - * 閮ㄩ棬缁╂晥鍔犲垎鎬诲垎鏁版眹鎬� - */ + * 閮ㄩ棬缁╂晥鍔犲垎鎬诲垎鏁版眹鎬� + */ @Excel(name = "閮ㄩ棬缁╂晥鍔犲垎鎬诲垎鏁版眹鎬�") private BigDecimal totalAddScore; /** - * 閮ㄩ棬缁╂晥鍑忓垎鎬诲垎鏁版眹鎬� - */ + * 閮ㄩ棬缁╂晥鍑忓垎鎬诲垎鏁版眹鎬� + */ @Excel(name = "閮ㄩ棬缁╂晥鍑忓垎鎬诲垎鏁版眹鎬�") private BigDecimal totalSubScore; /** - * 鑰冨嫟缁╂晥鎸囨爣澧炲姞鍒嗘暟 - */ + * 鑰冨嫟缁╂晥鎸囨爣澧炲姞鍒嗘暟 + */ private BigDecimal attendScoreAdd; /** - * 鑰冨嫟缁╂晥鎸囨爣鎵e噺鍒嗘暟 - */ + * 鑰冨嫟缁╂晥鎸囨爣鎵e噺鍒嗘暟 + */ private BigDecimal attendScoreSub; /** - * 璇勪环缁╂晥鎸囨爣澧炲姞鍒嗘暟 - */ + * 璇勪环缁╂晥鎸囨爣澧炲姞鍒嗘暟 + */ private BigDecimal reviewScoreAdd; /** - * 璇勪环缁╂晥鎸囨爣鎵e噺鍒嗘暟 - */ + * 璇勪环缁╂晥鎸囨爣鎵e噺鍒嗘暟 + */ private BigDecimal reviewScoreSub; /** - * 鎶曡瘔缁╂晥鎸囨爣澧炲姞鍒嗘暟 - */ + * 鎶曡瘔缁╂晥鎸囨爣澧炲姞鍒嗘暟 + */ private BigDecimal complainScoreAdd; /** - * 鎶曡瘔缁╂晥鎸囨爣鎵e噺鍒嗘暟 - */ + * 鎶曡瘔缁╂晥鎸囨爣鎵e噺鍒嗘暟 + */ private BigDecimal complainScoreSub; /** - * 鍔炰欢缁╂晥鎸囨爣澧炲姞鍒嗘暟 - */ + * 鍔炰欢缁╂晥鎸囨爣澧炲姞鍒嗘暟 + */ private BigDecimal goworkScoreAdd; /** - * 鍔炰欢缁╂晥鎸囨爣鎵e噺鍒嗘暟 - */ + * 鍔炰欢缁╂晥鎸囨爣鎵e噺鍒嗘暟 + */ private BigDecimal goworkScoreSub; /** - * 鏁堣兘缁╂晥鎸囨爣澧炲姞鍒嗘暟 - */ + * 鏁堣兘缁╂晥鎸囨爣澧炲姞鍒嗘暟 + */ private BigDecimal effectScoreAdd; /** - * 鏁堣兘缁╂晥鎸囨爣鎵e噺鍒嗘暟 - */ + * 鏁堣兘缁╂晥鎸囨爣鎵e噺鍒嗘暟 + */ private BigDecimal effectScoreSub; /** - * 鍏跺畠缁╂晥鎸囨爣澧炲姞鍒嗘暟 - */ + * 鍏跺畠缁╂晥鎸囨爣澧炲姞鍒嗘暟 + */ private BigDecimal otherScoreAdd; /** - * 鍏跺畠缁╂晥鎸囨爣鎵e噺鍒嗘暟 - */ + * 鍏跺畠缁╂晥鎸囨爣鎵e噺鍒嗘暟 + */ private BigDecimal otherScoreSub; /** - * 閮ㄩ棬缁╂晥骞冲潎鍒嗘暟锛屾牴鎹儴闂ㄦ墍灞炰汉鏁板钩鍧� - */ + * 閮ㄩ棬缁╂晥骞冲潎鍒嗘暟锛屾牴鎹儴闂ㄦ墍灞炰汉鏁板钩鍧� + */ @Excel(name = "閮ㄩ棬缁╂晥骞冲潎鍒嗘暟锛屾牴鎹儴闂ㄦ墍灞炰汉鏁板钩鍧�") private BigDecimal averageScore; /** - * 澶囨敞 - */ + * 澶囨敞 + */ private String remark; /** - * 骞� - */ + * 骞� + */ private Integer year; /** - * 鏈� - */ + * 鏈� + */ private Integer month; /** - * 鏃� - */ + * 鏃� + */ private Integer day; @Override public int hashCode() { - return this.getId().hashCode(); + return this.getId().hashCode(); } @Override public boolean equals(Object obj) { @@ -119,7 +117,7 @@ public class DeptPerformStatEntity extends DeptPerformStatVo { if (obj instanceof DeptPerformStatEntity) { DeptPerformStatEntity tmp = (DeptPerformStatEntity) obj; if (this.getId() == tmp.getId()) { - return true; + return true; } } return false; @@ -127,48 +125,48 @@ public class DeptPerformStatEntity extends DeptPerformStatVo { public void initAttrValue(){ - this.deptId = 0L; + this.deptId = 0L; - this.deptName = ""; + this.deptName = ""; - this.totalScore = new BigDecimal(0); + this.totalScore = new BigDecimal(0); - this.totalAddScore = new BigDecimal(0); + this.totalAddScore = new BigDecimal(0); - this.totalSubScore = new BigDecimal(0); + this.totalSubScore = new BigDecimal(0); - this.attendScoreAdd = new BigDecimal(0); + this.attendScoreAdd = new BigDecimal(0); - this.attendScoreSub = new BigDecimal(0); + this.attendScoreSub = new BigDecimal(0); - this.reviewScoreAdd = new BigDecimal(0); + this.reviewScoreAdd = new BigDecimal(0); - this.reviewScoreSub = new BigDecimal(0); + this.reviewScoreSub = new BigDecimal(0); - this.complainScoreAdd = new BigDecimal(0); + this.complainScoreAdd = new BigDecimal(0); - this.complainScoreSub = new BigDecimal(0); + this.complainScoreSub = new BigDecimal(0); - this.goworkScoreAdd = new BigDecimal(0); + this.goworkScoreAdd = new BigDecimal(0); - this.goworkScoreSub = new BigDecimal(0); + this.goworkScoreSub = new BigDecimal(0); - this.effectScoreAdd = new BigDecimal(0); + this.effectScoreAdd = new BigDecimal(0); - this.effectScoreSub = new BigDecimal(0); + this.effectScoreSub = new BigDecimal(0); - this.otherScoreAdd = new BigDecimal(0); + this.otherScoreAdd = new BigDecimal(0); - this.otherScoreSub = new BigDecimal(0); + this.otherScoreSub = new BigDecimal(0); - this.averageScore = new BigDecimal(0); + this.averageScore = new BigDecimal(0); - this.remark = ""; + this.remark = ""; - this.year = -1; + this.year = DateUtil.year(new Date()); - this.month = -1; + this.month = DateUtil.month(new Date())+1; - this.day = -1; + this.day = DateUtil.dayOfMonth(new Date()); } } \ No newline at end of file diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/IDingPersonService.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/IDingPersonService.java index e65e57553208f730262963043ff652a5d4179d06..f4d9b3fa78b3a19cc125fe0dd0caca1f41ff8b4f 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/IDingPersonService.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/IDingPersonService.java @@ -2,6 +2,7 @@ package com.mortals.xhx.module.dingding.personal.service; import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody; +import com.dingtalk.api.response.OapiV2UserGetResponse; import com.mortals.framework.common.Rest; import com.mortals.xhx.module.dingding.IDingTalkService; import com.mortals.xhx.module.dingding.personal.model.req.workmsg.WorkMsgReq; @@ -27,6 +28,14 @@ public interface IDingPersonService extends IDingTalkService { */ Rest<String> getPersonByMobile(String mobile); + /** + * 鏍规嵁id鑾峰彇鐢ㄦ埛鐢佃瘽 + * + * @param id + * @return + */ + Rest<String> getPersonById(String id); + /** * 鏍规嵁code鑾峰彇閽夐拤鐢ㄦ埛id * diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/impl/DingPersonServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/impl/DingPersonServiceImpl.java index 28269336a444e3881b7c81d1f57ead4c968dde60..acf8136a7e6a3fca257ba8647338f8d2121c0b03 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/impl/DingPersonServiceImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/dingding/personal/service/impl/DingPersonServiceImpl.java @@ -6,9 +6,11 @@ import com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceResponseBody; import com.aliyun.tea.TeaException; import com.dingtalk.api.DingTalkClient; import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request; +import com.dingtalk.api.request.OapiV2UserGetRequest; import com.dingtalk.api.request.OapiV2UserGetbymobileRequest; import com.dingtalk.api.request.OapiV2UserGetuserinfoRequest; import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response; +import com.dingtalk.api.response.OapiV2UserGetResponse; import com.dingtalk.api.response.OapiV2UserGetbymobileResponse; import com.dingtalk.api.response.OapiV2UserGetuserinfoResponse; import com.mortals.framework.common.Rest; @@ -50,6 +52,26 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID } } + @Override + public Rest<String> getPersonById(String id) { + try { + DingTalkClient client = getDingTalkClient("/topapi/v2/user/get"); + OapiV2UserGetRequest req = new OapiV2UserGetRequest(); + req.setUserid(id); //鐢ㄦ埛id + log.info("getPersonByID:{}",id); + OapiV2UserGetResponse rsp = client.execute(req, getToken()); + log.info("閽夐拤杩斿洖鐢ㄦ埛淇℃伅:{}", rsp.getBody()); + if (rsp.getErrcode() == 0) { + return Rest.ok("鎴愬姛", rsp.getResult().getMobile()); + } else { + return Rest.fail(String.format("code:%s,msg:%s", rsp.getErrcode(), rsp.getErrmsg())); + } + } catch (ApiException e) { + log.info("鏍规嵁鎵嬫満鍙风爜鏌ヨ浜哄憳寮傚父", e); + return Rest.fail(e.getMessage()); + } + } + @Override public Rest<String> getPersonByCode(String code) { try { diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/web/PerformAttendAppealController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/web/PerformAttendAppealController.java index d6536b576ba25367871e934cc4cf0812e79c62b0..1a5c3f528077d341c05c56e3d58ce4af1883fa04 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/web/PerformAttendAppealController.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/web/PerformAttendAppealController.java @@ -12,6 +12,8 @@ import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.user.model.UserQuery; import com.mortals.xhx.base.system.user.service.UserService; import com.mortals.xhx.common.code.*; +import com.mortals.xhx.module.dept.model.DeptQuery; +import com.mortals.xhx.module.dept.service.DeptService; import com.mortals.xhx.module.perform.model.PerformRulesQuery; import com.mortals.xhx.module.perform.model.vo.AppealInfo; import com.mortals.xhx.module.perform.model.vo.AppealSummaryQuery; @@ -65,6 +67,8 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro private UserService userService; @Autowired private PerformRulesService rulesService; + @Autowired + private DeptService deptService; public PerformAttendAppealController() { @@ -84,8 +88,9 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro this.addDict(model, "reviewResult", paramService.getParamBySecondOrganize("PerformAttendAppeal", "reviewResult")); this.addDict(model, "reviewSource", paramService.getParamBySecondOrganize("PerformAttendAppeal", "reviewSource")); this.addDict(model, "irregularType", IrregularTypeEnum.getEnumMap()); - this.addDict(model, "irregularOtherType", IrregularOtherTypeEnum.getEnumMap()); + this.addDict(model, "deptId", deptService.find(new DeptQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getDeptName()))); + super.init(model, context); }