diff --git a/attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue b/attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue index f39465c8e9f0070483c8eed07d692be7817e8dcb..39b61a0d985e722e38d5356d7d27834eb91cb707 100644 --- a/attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue +++ b/attendance-performance-manager-ui/admin/src/views/attendance/record/hik/list.vue @@ -95,7 +95,7 @@ </div> <div class="mt10"> - <el-link :href="baseUrl+item.filePath" target="_blank" type="primary">閲嶆柊涓嬭浇</el-link> + <el-link :href="item.filePath" target="_blank" type="primary">閲嶆柊涓嬭浇</el-link> </div> </div> <div class="times mt10"> diff --git a/attendance-performance-manager-ui/admin/src/views/staff/list.vue b/attendance-performance-manager-ui/admin/src/views/staff/list.vue index 4fc7cda6afe10cbc52e36e891570ead3b7ecf382..c8439b384de23eeebae199cea49e9591d63856b1 100644 --- a/attendance-performance-manager-ui/admin/src/views/staff/list.vue +++ b/attendance-performance-manager-ui/admin/src/views/staff/list.vue @@ -78,7 +78,7 @@ </el-button> <el-dropdown-menu slot="dropdown"> <el-dropdown-item> - <el-button type="text">鍚屾鏁版嵁</el-button> + <el-button type="text" @click="syncPerson">鍚屾鏁版嵁</el-button> </el-dropdown-item> <el-dropdown-item> <el-button type="text" @click="handleImport" @@ -219,6 +219,14 @@ export default { ); this.isdialog = true; }, + /** 鍚屾 */ + syncPerson() { + this.$post("/staff/syncPersons", {}).then((res) => { + if (res.code == 1) { + this.$message.success(res.msg) + } + }); + }, /** 瀵煎叆 */ handleImport() { this.upload.title = "鍛樺伐瀵煎叆"; diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java index 4ef4f02522c454496d90c0608427052bcf909747..59445d68a970b465dd395eb7f21274ab5c4a3e6e 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java @@ -1,5 +1,6 @@ package com.mortals.xhx.base.login.web; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSONObject; import com.mortals.framework.ap.CookieService; @@ -20,8 +21,16 @@ import com.mortals.xhx.base.system.resource.service.ResourceService; import com.mortals.xhx.base.system.user.model.UserEntity; import com.mortals.xhx.base.system.user.service.UserService; import com.mortals.xhx.base.system.valid.service.ValidCodeService; +import com.mortals.xhx.common.code.GoWorkResultEnum; +import com.mortals.xhx.common.code.OffWorkResultEnum; import com.mortals.xhx.common.key.RedisKey; import com.mortals.xhx.common.pdu.HomeStatInfo; +import com.mortals.xhx.module.attendance.model.AttendanceRecordEntity; +import com.mortals.xhx.module.attendance.model.AttendanceRecordQuery; +import com.mortals.xhx.module.attendance.model.AttendanceVacationBalanceQuery; +import com.mortals.xhx.module.attendance.model.AttendanceVacationRecordQuery; +import com.mortals.xhx.module.attendance.service.AttendanceRecordService; +import com.mortals.xhx.module.attendance.service.AttendanceVacationRecordService; import com.mortals.xhx.module.dept.model.DeptQuery; import com.mortals.xhx.module.dept.service.DeptService; import com.mortals.xhx.module.staff.model.StaffQuery; @@ -61,6 +70,10 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi private ICacheService cacheService; @Autowired private IAuthTokenService authTokenService; + @Autowired + private AttendanceRecordService recordService; + @Autowired + private AttendanceVacationRecordService vacationRecordService; @Autowired private StaffService staffService; @@ -157,13 +170,54 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi int totalDeptNum = deptService.count(new DeptQuery(), getContext()); homeStatInfo.setTotalDeptNum(totalDeptNum); - //todo - homeStatInfo.setAttendRadio(new BigDecimal(98.00)); - homeStatInfo.setLevealPersonNum(6); - homeStatInfo.setLatePersonNum(2); - homeStatInfo.setLeftEarlyPersonNum(1); - homeStatInfo.setMissCardPersonNum(23); - homeStatInfo.setAttendPersonNum(426); + + AttendanceRecordQuery attendanceRecordQuery = new AttendanceRecordQuery(); + attendanceRecordQuery.setAttendanceDateStart(DateUtil.today()); + attendanceRecordQuery.setAttendanceDateEnd(DateUtil.today()); + List<AttendanceRecordEntity> attendanceRecordEntities = recordService.find(attendanceRecordQuery); + //鎬绘墦鍗� + long total = attendanceRecordEntities.parallelStream().map(item -> item.getStaffId()).distinct().count(); + + //杩熷埌娆℃暟 + long beLate = attendanceRecordEntities.parallelStream() + .flatMap(item -> item.getAttendanceRecordDetailList().stream()) + .filter(f -> GoWorkResultEnum.杩熷埌.getValue() == f.getGoWorkResult() || OffWorkResultEnum.杩熷埌.getValue() == f.getOffWorkResult()) + .count(); + + //鏃╅€€娆℃暟 + long leaveEarly = attendanceRecordEntities.parallelStream() + .flatMap(item -> item.getAttendanceRecordDetailList().stream()) + .filter(f -> GoWorkResultEnum.鏃╅€€.getValue() == f.getGoWorkResult() || OffWorkResultEnum.鏃╅€€.getValue() == f.getOffWorkResult()) + .count(); + + //缂哄崱娆℃暟 + long lackOfCards = attendanceRecordEntities.parallelStream() + .flatMap(item -> item.getAttendanceRecordDetailList().stream()) + .filter(f -> GoWorkResultEnum.缂哄崱.getValue() == f.getGoWorkResult() || OffWorkResultEnum.缂哄崱.getValue() == f.getOffWorkResult()) + .count(); + + + AttendanceVacationRecordQuery vacationRecordQuery = new AttendanceVacationRecordQuery(); + vacationRecordQuery.setCreateTimeStart(DateUtil.today()); + vacationRecordQuery.setCreateTimeEnd(DateUtil.today()); + int levealPersonNum = vacationRecordService.count(vacationRecordQuery, getContext()); + + //鏈€冨嫟 + long noAtt=lackOfCards; + long att = total - noAtt; + + if (att!=0L){ + BigDecimal bigDecimal = new BigDecimal(att).divide(new BigDecimal(total)).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_CEILING); + homeStatInfo.setAttendRadio(bigDecimal.toString()+"%"); + }else{ + homeStatInfo.setAttendRadio("0%"); + } + + homeStatInfo.setLevealPersonNum(levealPersonNum); + homeStatInfo.setLatePersonNum(beLate); + homeStatInfo.setLeftEarlyPersonNum(leaveEarly); + homeStatInfo.setMissCardPersonNum(lackOfCards); + homeStatInfo.setAttendPersonNum(total); data.put("homeStat", homeStatInfo); data.put("token", token); @@ -179,29 +233,6 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi return ret.toJSONString(); } - private void generateBlackCookie(HttpServletRequest request, HttpServletResponse response, String loginName, Set<String> urls) { - try { - String cacheKey = RedisKey.KEY_MENU_CACHE + loginName; - String securityKey = GlobalSysInfo.getPropertyValue(SysConstains.PROP_COOKIE_SECURITY_KEY); - //搴斾负Cookie浼氳秴闀匡紝鎵€浠ユ敼涓轰粎瀛樺偍key灏嗗€兼斁鍏edis - //CookieService.setCookieForAuth(request, response, securityKey, null); - StringBuilder sb = new StringBuilder(); - if (urls != null && urls.size() > 0) { - for (String url : urls) { - int index = url.hashCode() & (Integer.MAX_VALUE - 1); - sb.append(index).append(","); - } - } - String menuUrl = sb.toString(); - menuUrl = AESUtil.encrypt(menuUrl, securityKey); - cacheService.set(cacheKey, menuUrl, 604800); - HttpUtil.setCookieValue(request, response, SysConstains.COOKIE_MENU, cacheKey, -1); - - } catch (Throwable e) { - - } - } - private String generateMenuUrlCode(Set<String> urls) { try { diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiWebPerformController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiWebPerformController.java index 6d58c4fb83f43c05683a2dc9b4be7707b8d9e55b..a9dff195df6af39a0ee2588e1bdec676e48961c8 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiWebPerformController.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiWebPerformController.java @@ -1,6 +1,7 @@ package com.mortals.xhx.busiz.h5.web; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.mortals.framework.annotation.UnAuth; @@ -23,6 +24,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Date; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; @RestController @Slf4j @@ -47,6 +51,10 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq> private StaffService staffService; @Autowired private PerformRulesCategoryService categoryService; + @Autowired + private PerformStaffConfService performStaffConfService; + @Autowired + private PerformStaffConfDetailService performStaffConfDetailService; /** @@ -206,7 +214,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq> //閫氳繃鎵嬫満鍙风爜鏌ヨ鍛樺伐灞炴€� PerformRulesEntity rule = getRule(req.getRuleCode()); StaffEntity staffEntity = getStaff(req.getPhone()); - + checkStaffAutoConf(staffEntity, rule); PerformAttendRecordEntity recordEntity = new PerformAttendRecordEntity(); recordEntity.initAttrValue(); recordEntity.setSubMethod(SubMethodEnum.绯荤粺鑷姩.getValue()); @@ -242,9 +250,8 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq> //璇勪环淇濆瓨 StaffEntity staffEntity = getStaff(req.getPhone()); PerformRulesEntity rule = getRule(req.getRuleCode()); - + checkStaffAutoConf(staffEntity, rule); PerformReviewRecordEntity recordEntity = new PerformReviewRecordEntity(); - recordEntity.initAttrValue(); recordEntity.setSubMethod(SubMethodEnum.绯荤粺鑷姩.getValue()); BeanUtils.copyProperties(req, recordEntity); @@ -272,10 +279,33 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq> } + private void checkStaffAutoConf(StaffEntity staffEntity, PerformRulesEntity rule) { + Boolean rulePass = false; + //鏍¢獙褰撳墠鍛樺伐鏄惁瀛樺湪鑷姩瑙勫垯涓� + List<PerformStaffConfEntity> performStaffConfEntities = performStaffConfService.find(new PerformStaffConfQuery()); + for (PerformStaffConfEntity performStaffConfEntity : performStaffConfEntities) { + String staffIds = performStaffConfEntity.getStaffIds(); + Set<String> split = StrUtil.split(staffIds, ",").stream().collect(Collectors.toSet()); + if (split.contains(staffEntity.getId().toString())) { + //鏌ヨ褰撳墠瑙勫垯 + List<PerformStaffConfDetailEntity> staffConfDetailEntities = performStaffConfDetailService.find(new PerformStaffConfDetailQuery().staffConfId(performStaffConfEntity.getId())); + for (PerformStaffConfDetailEntity staffConfDetailEntity : staffConfDetailEntities) { + if (staffConfDetailEntity.getRuleId() == rule.getId()){ + rulePass = true; + break; + } + } + } + if (rulePass) break; + } + if(rulePass) throw new AppException("褰撳墠鐢ㄦ埛涓庣哗鏁堣鍒欐湭閰嶇疆鑷姩鏍告煡锛岃鍦ㄥ悗鍙伴厤缃悗鍐嶆柊澧烇紒"); + } + private boolean complain(ComplainSaveReq req) throws AppException { //鎶曡瘔淇濆瓨 StaffEntity staffEntity = getStaff(req.getPhone()); PerformRulesEntity rule = getRule(req.getRuleCode()); + checkStaffAutoConf(staffEntity, rule); PerformComplainRecordEntity recordEntity = new PerformComplainRecordEntity(); recordEntity.initAttrValue(); recordEntity.setSubMethod(SubMethodEnum.绯荤粺鑷姩.getValue()); @@ -307,6 +337,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq> //鍔炰欢淇濆瓨 StaffEntity staffEntity = getStaff(req.getPhone()); PerformRulesEntity rule = getRule(req.getRuleCode()); + checkStaffAutoConf(staffEntity, rule); PerformGoworkRecordEntity recordEntity = new PerformGoworkRecordEntity(); recordEntity.initAttrValue(); recordEntity.setSubMethod(SubMethodEnum.绯荤粺鑷姩.getValue()); @@ -339,7 +370,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq> //鏁堣兘淇濆瓨 StaffEntity staffEntity = getStaff(req.getPhone()); PerformRulesEntity rule = getRule(req.getRuleCode()); - + checkStaffAutoConf(staffEntity, rule); PerformEffectRecordEntity recordEntity = new PerformEffectRecordEntity(); recordEntity.initAttrValue(); recordEntity.setSubMethod(SubMethodEnum.绯荤粺鑷姩.getValue()); @@ -372,6 +403,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq> //鍏跺畠淇濆瓨 StaffEntity staffEntity = getStaff(req.getPhone()); PerformRulesEntity rule = getRule(req.getRuleCode()); + checkStaffAutoConf(staffEntity, rule); PerformOtherRecordEntity recordEntity = new PerformOtherRecordEntity(); recordEntity.initAttrValue(); recordEntity.setSubMethod(SubMethodEnum.绯荤粺鑷姩.getValue()); diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/AppealApiController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/AppealApiController.java index 0c8d6bb88d6067f56224dbbddaf19baa20966266..a11ddcf0910068c6041fb0ab6053fe5fd3c1e259 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/AppealApiController.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/AppealApiController.java @@ -14,13 +14,18 @@ import com.mortals.framework.model.Result; import com.mortals.xhx.busiz.h5.req.AppealReq; import com.mortals.xhx.busiz.h5.req.PerformReq; import com.mortals.xhx.busiz.h5.rsp.AppealStatInfo; +import com.mortals.xhx.busiz.h5.rsp.PerformStatInfo; import com.mortals.xhx.common.code.*; import com.mortals.xhx.common.utils.BeanUtil; +import com.mortals.xhx.module.check.dao.CheckAllRecordDao; import com.mortals.xhx.module.check.model.*; import com.mortals.xhx.module.check.service.*; import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity; import com.mortals.xhx.module.perform.model.PerformAttendAppealQuery; import com.mortals.xhx.module.perform.service.PerformAttendAppealService; +import com.mortals.xhx.module.staff.model.StaffPerformStatEntity; +import com.mortals.xhx.module.staff.model.StaffPerformStatQuery; +import com.mortals.xhx.module.staff.service.StaffPerformStatService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -30,10 +35,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; +import java.util.*; import static com.mortals.framework.ap.SysConstains.*; import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED; @@ -62,7 +64,10 @@ public class AppealApiController extends AbstractBaseController<PerformReq> { private CheckGoworkRecordService checkGoworkRecordService; @Autowired private CheckOtherRecordService checkOtherRecordService; - + @Autowired + private CheckAllRecordDao checkAllRecordDao; + @Autowired + private StaffPerformStatService staffPerformStatService; @Autowired private PerformAttendAppealService appealService; @@ -89,13 +94,44 @@ public class AppealApiController extends AbstractBaseController<PerformReq> { } log.info("銆恵}銆戙€愯姹備綋銆�--> 鐢ㄦ埛:{}", busiDesc, context.getUser().getRealName()); try { - //todo 鏌ヨ褰撳墠鐧诲綍浜虹殑缁╂晥鍒嗘暟 + + CheckAllRecordQuery checkAllRecordQuery = new CheckAllRecordQuery(); + checkAllRecordQuery.setSubAddType(SubAddTypeEnum.鎵i櫎.getValue()); + checkAllRecordQuery.setStaffId(context.getUser().getCustomerId()); + int totalTimes = checkAllRecordDao.getCount(checkAllRecordQuery); + + checkAllRecordQuery.setCheckTimeStart(DateUtil.today()); + checkAllRecordQuery.setCheckTimeEnd(DateUtil.today()); + int todayTimes = checkAllRecordDao.getCount(checkAllRecordQuery); + + StaffPerformStatQuery staffPerformStatQuery = new StaffPerformStatQuery(); + staffPerformStatQuery.setStaffId(context.getUser().getCustomerId()); + staffPerformStatQuery.setYear(DateUtil.year(new Date())); + staffPerformStatQuery.setMonth(DateUtil.month(new Date()) + 1); + + List<StaffPerformStatEntity> staffPerformStatEntities = staffPerformStatService.find(staffPerformStatQuery); + BigDecimal totalScore = new BigDecimal(0.0); + if (ObjectUtils.isEmpty(staffPerformStatEntities)) { + totalScore = staffPerformStatEntities.stream().map(item -> item.getTotalSubScore()).reduce(BigDecimal.ZERO, BigDecimal::add); + } + + staffPerformStatQuery.setDay(DateUtil.dayOfMonth(new Date())); + //浠婃棩寰楀垎 + StaffPerformStatEntity staffPerformStatEntity = staffPerformStatService.selectOne(staffPerformStatQuery); + + BigDecimal todayScore = new BigDecimal(0.0); + if (!ObjectUtils.isEmpty(staffPerformStatEntity)) { + todayScore = staffPerformStatEntity.getTotalSubScore(); + } + AppealStatInfo appealStatInfo = new AppealStatInfo(); - appealStatInfo.setTotalScore(new BigDecimal("10.52").setScale(1,BigDecimal.ROUND_HALF_UP)); - appealStatInfo.setTotalTimes(12); - appealStatInfo.setTodayScore(new BigDecimal("2.5").setScale(1,BigDecimal.ROUND_HALF_UP)); - appealStatInfo.setTodayTimes(3); + appealStatInfo.setTotalScore(totalScore.setScale(1, BigDecimal.ROUND_HALF_UP)); + appealStatInfo.setTotalTimes(totalTimes); + appealStatInfo.setTodayScore(todayScore.setScale(1, BigDecimal.ROUND_HALF_UP)); + appealStatInfo.setTodayTimes(todayTimes); rest.setData(appealStatInfo); + + recordSysLog(request, busiDesc + " 銆愭垚鍔熴€�"); } catch (Exception e) { log.error(busiDesc, e); diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/InspectApiController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/InspectApiController.java index 5ee57925a01e083abf2a5d6292dfbf7bd62dbdd4..154637ca99e824d1f04f525cf9bd7fca36619470 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/InspectApiController.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/InspectApiController.java @@ -16,6 +16,11 @@ import com.mortals.xhx.busiz.h5.rsp.PerformDetailInfo; import com.mortals.xhx.busiz.h5.rsp.PerformInfo; 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.AttendanceClassDetailService; +import com.mortals.xhx.module.attendance.service.AttendanceClassService; +import com.mortals.xhx.module.attendance.service.AttendanceGroupFixedworkService; +import com.mortals.xhx.module.attendance.service.AttendanceGroupService; import com.mortals.xhx.module.check.dao.CheckAllRecordDao; import com.mortals.xhx.module.check.model.*; import com.mortals.xhx.module.check.model.vo.CheckAllRecordVo; @@ -68,11 +73,8 @@ public class InspectApiController extends AbstractBaseController<PerformReq> { private PerformRulesService rulesService; @Autowired private StaffService staffService; - @Autowired private CheckAllRecordService checkAllRecordService; - - @Autowired private CheckAttendRecordService checkAttendRecordService; @Autowired @@ -85,10 +87,16 @@ public class InspectApiController extends AbstractBaseController<PerformReq> { private CheckGoworkRecordService checkGoworkRecordService; @Autowired private CheckOtherRecordService checkOtherRecordService; - @Autowired private CheckAllRecordDao checkAllRecordDao; - + @Autowired + private AttendanceGroupService groupService; + @Autowired + private AttendanceClassService classService; + @Autowired + private AttendanceClassDetailService classDetailService; + @Autowired + private AttendanceGroupFixedworkService fixedworkService; protected void init(Map<String, Object> model, Context context) { this.addDict(model, "checkStatus", CheckStatusEnum.getEnumMap()); @@ -97,6 +105,8 @@ public class InspectApiController extends AbstractBaseController<PerformReq> { this.addDict(model, "subAddType", SubAddTypeEnum.getEnumMap()); this.addDict(model, "checkType", CheckTypeEnum.getEnumMap()); this.addDict(model, "reviewResult", ReviewResultEnum.getEnumMap()); + this.addDict(model, "irregularOtherType", IrregularOtherTypeEnum.getEnumMap()); + } /** @@ -314,6 +324,8 @@ public class InspectApiController extends AbstractBaseController<PerformReq> { recordEntity.setSubMethod(SubMethodEnum.澶у巺宸℃煡.getValue()); recordEntity.setErrorTime(new Date()); + //鏍规嵁鑰冨嫟缁勬煡璇� 涓婁笅鐝� + buildGoOffWork(req, context, recordEntity); recordEntity.setCreateUserId(context.getUser().getId()); recordEntity.setCreateTime(new Date()); @@ -323,6 +335,86 @@ public class InspectApiController extends AbstractBaseController<PerformReq> { } + private void buildGoOffWork(InspectSaveReq req, Context context, PerformAttendRecordEntity recordEntity) { + if(!ObjectUtils.isEmpty(req.getAttendanceGroupId())&&!ObjectUtils.isEmpty(req.getAttendanceDate())){ + AttendanceGroupEntity attendanceGroupEntity = groupService.get(req.getAttendanceGroupId(), context); + if (!ObjectUtils.isEmpty(attendanceGroupEntity)) { + //鍒ゆ柇涓婁笅鐝椂闂� + if (TypeEnum.鍥哄畾鐝埗.getValue() == attendanceGroupEntity.getType()) { + AttendanceGroupFixedworkEntity fixedworkEntity = fixedworkService.selectOne(new AttendanceGroupFixedworkQuery().groupId(attendanceGroupEntity.getId())); + if (!ObjectUtils.isEmpty(fixedworkEntity)) { + //鏌ョ湅褰撳墠鏃堕棿鏄槦鏈熷嚑 + int dayOfWeek = DateUtil.dayOfWeek(req.getAttendanceDate()); + switch (dayOfWeek) { + case 1: + String goOffWorkStr = getGoOffWorkStr(fixedworkEntity.getSundayClassId()); + recordEntity.setGoOffTimeStr(goOffWorkStr); + break; + case 2: + goOffWorkStr = getGoOffWorkStr(fixedworkEntity.getMondayClassId()); + recordEntity.setGoOffTimeStr(goOffWorkStr); + break; + case 3: + goOffWorkStr = getGoOffWorkStr(fixedworkEntity.getTuesdayClassId()); + recordEntity.setGoOffTimeStr(goOffWorkStr); + break; + case 4: + goOffWorkStr = getGoOffWorkStr(fixedworkEntity.getWednesdayClassId()); + recordEntity.setGoOffTimeStr(goOffWorkStr); + break; + case 5: + goOffWorkStr = getGoOffWorkStr(fixedworkEntity.getTuesdayClassId()); + recordEntity.setGoOffTimeStr(goOffWorkStr); + break; + case 6: + goOffWorkStr = getGoOffWorkStr(fixedworkEntity.getFridayClassId()); + recordEntity.setGoOffTimeStr(goOffWorkStr); + break; + case 7: + goOffWorkStr = getGoOffWorkStr(fixedworkEntity.getSundayClassId()); + recordEntity.setGoOffTimeStr(goOffWorkStr); + break; + default: + recordEntity.setGoOffTimeStr(""); + } + } + } + else if (TypeEnum.鑷敱宸ユ椂.getValue() == attendanceGroupEntity.getType()) { + + } else if (TypeEnum.鎺掔彮鍒�.getValue() == attendanceGroupEntity.getType()) { + + } else { + + } + } + } + } + + + private String getGoOffWorkStr(Long sundayClassId) { + if (ObjectUtils.isEmpty(sundayClassId)) return ""; + + StringBuilder goOffWorkSb = new StringBuilder(); + List<AttendanceClassDetailEntity> classDetailEntities = classDetailService.find(new AttendanceClassDetailQuery().classId(sundayClassId)); + if (!ObjectUtils.isEmpty(classDetailEntities)) { + for (AttendanceClassDetailEntity classDetailEntity : classDetailEntities) { + String goWorkStr = ""; + String offWorkStr = ""; + if (!ObjectUtils.isEmpty(classDetailEntity.getGoWorkDate())) { + goWorkStr = DateUtil.format(classDetailEntity.getGoWorkDate(),"HH:mm"); + } + if (!ObjectUtils.isEmpty(classDetailEntity.getOffWorkDate())) { + offWorkStr = DateUtil.format(classDetailEntity.getOffWorkDate(),"HH:mm"); + } + goOffWorkSb.append(goWorkStr); + goOffWorkSb.append("~"); + goOffWorkSb.append(offWorkStr); + goOffWorkSb.append(" \n"); + } + } + return goOffWorkSb.toString(); + } + private boolean review(InspectSaveReq req, Context context) throws AppException { //璇勪环淇濆瓨 @@ -470,6 +562,7 @@ public class InspectApiController extends AbstractBaseController<PerformReq> { StaffEntity custStaff = getStaff(context.getUser().getCustomerId().toString()); recordEntity.setDeductPerson(custStaff==null?"绯荤粺绠$悊鍛�":custStaff.getName()); + recordEntity.setDeptId(staffEntity.getDeptId()); recordEntity.setDeptName(staffEntity.getDeptName()); recordEntity.setSubAddType(rule.getSubAddType()); diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/PerformApiController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/PerformApiController.java index d2b8ea0d72ffaac90a79888a3b0750ed813c9111..de8e5cc0925bec23668fff38a0a91bf96ccfbbbd 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/PerformApiController.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/PerformApiController.java @@ -401,7 +401,6 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { } PerformAttendAppealEntity entity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(performDetailInfo.getId()).performType(performReq.getPerformType())); - log.info("entity:{}", JSONObject.toJSONString(entity)); if (!ObjectUtils.isEmpty(entity)) { diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/common/code/AppealResultEnum.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/common/code/AppealResultEnum.java index 0d63735889dc26321a1eafd94c2bd0bb7a7827aa..d175d006724e5b13cbec0fe532f06ac49894323e 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/common/code/AppealResultEnum.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/common/code/AppealResultEnum.java @@ -9,6 +9,7 @@ import java.util.Map; * @author zxfei */ public enum AppealResultEnum { + 鐢宠瘔涓�(0, "鐢宠瘔涓�"), 閫氳繃(1, "閫氳繃"), 涓嶉€氳繃(2, "涓嶉€氳繃"); private Integer value; diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/common/pdu/HomeStatInfo.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/common/pdu/HomeStatInfo.java index 590b36f9b3f100ee8798cd9f1100cbe8098e66d7..be5659bbea59337b2aa6682904c56853924b4ed4 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/common/pdu/HomeStatInfo.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/common/pdu/HomeStatInfo.java @@ -17,25 +17,25 @@ public class HomeStatInfo { private Integer totalDeptNum; - private Integer attendPersonNum; + private Long attendPersonNum=0L; - private BigDecimal attendRadio; + private String attendRadio; /** * 璇峰亣浜烘暟 */ - private Integer levealPersonNum; + private Integer levealPersonNum=0; /** * 杩熷埌浜烘暟 */ - private Integer latePersonNum; + private Long latePersonNum=0L; /** * 鏃╅€€浜烘暟 */ - private Integer leftEarlyPersonNum; + private Long leftEarlyPersonNum=0L; /** * 缂哄崱浜烘暟 */ - private Integer missCardPersonNum; + private Long missCardPersonNum=0L; } diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java index 98c3497bd1be31bd062b29f1726740c021351e6a..d32f1ffde255613693934bb3a90f14efcabffbeb 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java @@ -74,8 +74,6 @@ public class SyncUserTaskImpl implements ITaskExcuteService { for (PersonInfo personInfo : personInfoList) { StaffEntity staffEntity = staffService.getExtCache(StrUtil.padPre(personInfo.getJobNo(), 8, "0")); DeptEntity deptEntity = deptService.selectOne(new DeptQuery().deptCode(personInfo.getOrgIndexCode())); - // AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId())); - // AttendanceStatEntity statEntity = attendanceStatService.selectOne(new AttendanceStatQuery().staffId(staffEntity.getId())); //鍒ゆ柇鏈湴鏁版嵁鏄惁涓虹┖ if (ObjectUtils.isEmpty(staffEntity)) { //鏂板鍛樺伐淇℃伅 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 5da417ebac985c1d5e47084f604c297149e2f9f3..f62694a66933fad29e829c720f177b94687976d3 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 @@ -255,11 +255,11 @@ public class AttendanceStatEntity extends AttendanceStatVo { this.windowCategory = ""; - this.staffId = -1L; + this.staffId = null; this.staffName = ""; - this.deptId = -1L; + this.deptId = null; this.deptName = ""; diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceRecordVo.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceRecordVo.java index 10e2f74038bbf12998637ec678f01a26dead4481..1a2e812f14c24ca410d27b98947084a979198680 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceRecordVo.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceRecordVo.java @@ -54,5 +54,8 @@ public class AttendanceRecordVo extends BaseEntityLong { * 瀵煎嚭鍙傛暟閰嶇疆 */ private List<String> properties; + + + private List<Long> idList; } diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceExportRecordController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceExportRecordController.java index d377a433210a89705b8c60524b59717505c12b51..2ded8a966e1e68c6e023ed2493a0e2988f607f66 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceExportRecordController.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceExportRecordController.java @@ -50,13 +50,4 @@ public class AttendanceExportRecordController extends BaseCRUDJsonBodyMappingCon super.init(model, context); } - @Override - protected void doListBefore(AttendanceExportRecordEntity query, Map<String, Object> model, Context context) throws AppException { - if (ObjectUtils.isEmpty(query.getOrderColList())) { - query.setOrderColList(Arrays.asList(new OrderCol("createTime", OrderCol.DESCENDING),new OrderCol("staffName", OrderCol.DESCENDING))); - } else { - query.getOrderColList().add(new OrderCol("createTime", OrderCol.DESCENDING)); - } - - } } diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordController.java index 71fb353ca7fd5d6fa1b0edcb547409d1b262cc3b..3632b3626148cc31178b370142aaf1a9764e0d9a 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordController.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordController.java @@ -4,8 +4,10 @@ import com.alibaba.fastjson.JSONObject; import com.mortals.framework.common.Rest; import com.mortals.framework.exception.AppException; import com.mortals.framework.model.OrderCol; +import com.mortals.framework.utils.ServletUtils; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.xhx.base.system.param.service.ParamService; +import com.mortals.xhx.base.system.upload.service.UploadService; import com.mortals.xhx.common.code.GoWorkResultEnum; import com.mortals.xhx.common.code.NormalEnum; import com.mortals.xhx.common.code.OffWorkResultEnum; @@ -13,7 +15,9 @@ import com.mortals.xhx.common.code.YesNoEnum; import com.mortals.xhx.module.attendance.model.*; import com.mortals.xhx.module.attendance.model.vo.AttendStatInfo; import com.mortals.xhx.module.attendance.service.AttendanceClassService; +import com.mortals.xhx.module.attendance.service.AttendanceExportRecordService; import com.mortals.xhx.module.attendance.service.AttendanceGroupService; +import com.mortals.xhx.module.dept.model.DeptEntity; import com.mortals.xhx.module.dept.model.DeptQuery; import com.mortals.xhx.module.dept.service.DeptService; import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity; @@ -30,7 +34,10 @@ import org.springframework.web.bind.annotation.RestController; import com.mortals.framework.model.Context; import com.mortals.xhx.module.attendance.service.AttendanceRecordService; +import org.springframework.web.multipart.MultipartFile; +import java.io.ByteArrayInputStream; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; @@ -46,6 +53,8 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle @Autowired private ParamService paramService; + @Autowired + private UploadService uploadService; @Autowired private AttendanceGroupService attendanceGroupService; @@ -57,6 +66,12 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle private AttendanceClassService attendanceClassService; @Autowired private StaffService staffService; + @Autowired + private AttendanceExportRecordService attendanceExportRecordService; + @Autowired + private AttendanceGroupService groupService; + @Autowired + private AttendanceClassService classService; public AttendanceRecordController() { super.setModuleDesc("鑰冨嫟鎵撳崱璁板綍淇℃伅"); @@ -82,40 +97,78 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle for (AttendanceRecordEntity recordEntity : list) { List<AttendanceRecordDetailEntity> attendanceRecordDetailList = recordEntity.getAttendanceRecordDetailList(); - if(!ObjectUtils.isEmpty(attendanceRecordDetailList)){ + if (!ObjectUtils.isEmpty(attendanceRecordDetailList)) { for (AttendanceRecordDetailEntity detailEntity : attendanceRecordDetailList) { AttendanceRecordEntity attendanceRecord = new AttendanceRecordEntity(); attendanceRecord.initAttrValue(); - BeanUtils.copyProperties(recordEntity,attendanceRecord); + BeanUtils.copyProperties(recordEntity, attendanceRecord); attendanceRecord.setAttendanceRecordDetailEntity(detailEntity); attendanceRecordEntities.add(attendanceRecord); } - }else { + } else { AttendanceRecordEntity attendanceRecord = new AttendanceRecordEntity(); attendanceRecord.initAttrValue(); - BeanUtils.copyProperties(recordEntity,attendanceRecord); + BeanUtils.copyProperties(recordEntity, attendanceRecord); attendanceRecordEntities.add(attendanceRecord); } } - if(!ObjectUtils.isEmpty(attendanceRecordEntities)){ + if (!ObjectUtils.isEmpty(attendanceRecordEntities)) { list.clear(); list.addAll(attendanceRecordEntities); } } + @Override + public void doExportFileAfter(byte[] data, AttendanceRecordEntity query, Context context) throws AppException { + InputStream inputStream = new ByteArrayInputStream(data); + MultipartFile file = ServletUtils.getMultipartFile(inputStream, "kaoqin.xlsx"); + String filePath = uploadService.saveFileUpload(file, "file/fileupload", null); + AttendanceExportRecordEntity attendanceExportRecordEntity = new AttendanceExportRecordEntity(); + attendanceExportRecordEntity.initAttrValue(); + attendanceExportRecordEntity.setFilePath(filePath); + if (query.getIdList() != null) { + List<Long> idList = query.getIdList(); + attendanceExportRecordEntity.setRecordIdList(idList.stream().map(i->i.toString()).collect(Collectors.joining(","))); + } + if (query.getAttendanceDateStart() != null) { + String attendanceDate = query.getAttendanceDateStart() + "~" + query.getAttendanceDateEnd(); + attendanceExportRecordEntity.setAttendanceDate(attendanceDate); + } + if(!ObjectUtils.isEmpty(query.getAttendanceGroupId())){ + AttendanceGroupEntity attendanceGroupEntity = groupService.get(query.getAttendanceGroupId()); + attendanceExportRecordEntity.setGroupName(attendanceGroupEntity==null?"":attendanceGroupEntity.getGroupName()); + } + + if(!ObjectUtils.isEmpty(query.getDeptId())){ + DeptEntity deptEntity = deptService.get(query.getDeptId(), context); + attendanceExportRecordEntity.setDeptName(deptEntity==null?"":deptEntity.getDeptName()); + } + + if(!ObjectUtils.isEmpty(query.getShiftsId())){ + AttendanceClassEntity attendanceClassEntity = classService.get(query.getShiftsId(), context); + attendanceExportRecordEntity.setClassName(attendanceClassEntity==null?"":attendanceClassEntity.getClassName()); + } + attendanceExportRecordEntity.setCreateUserId(context.getUser().getId()); + attendanceExportRecordEntity.setCreateTime(new Date()); + attendanceExportRecordEntity.setType(2); + attendanceExportRecordEntity.setExportOrImport(1); + attendanceExportRecordService.save(attendanceExportRecordEntity); + } + + @Override protected void doListBefore(AttendanceRecordEntity query, Map<String, Object> model, Context context) throws AppException { - if (query.getClassId()!=null){ + if (query.getClassId() != null) { query.setShiftsId(query.getClassId()); } - if (query.getGroupId()!=null){ + if (query.getGroupId() != null) { query.setAttendanceGroupId(query.getGroupId()); } if (ObjectUtils.isEmpty(query.getOrderColList())) { - query.setOrderColList(Arrays.asList(new OrderCol("attendanceDate", OrderCol.DESCENDING),new OrderCol("staffName", OrderCol.DESCENDING))); + query.setOrderColList(Arrays.asList(new OrderCol("attendanceDate", OrderCol.DESCENDING), new OrderCol("staffName", OrderCol.DESCENDING))); } else { query.getOrderColList().add(new OrderCol("attendanceDate", OrderCol.DESCENDING)); query.getOrderColList().add(new OrderCol("staffName", OrderCol.DESCENDING)); @@ -240,7 +293,6 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle } - /** * 姣忔棩缁熻 */ 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 1e4958d6852eabed16170bbeded22abcf060cd73..fb1121d193b63e560b7840a61cd55a7b5ffd8013 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 @@ -10,9 +10,13 @@ import com.mortals.framework.utils.ServletUtils; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.upload.service.UploadService; +import com.mortals.xhx.module.attendance.model.AttendanceClassEntity; import com.mortals.xhx.module.attendance.model.AttendanceExportRecordEntity; +import com.mortals.xhx.module.attendance.model.AttendanceGroupEntity; import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity; +import com.mortals.xhx.module.attendance.service.AttendanceClassService; import com.mortals.xhx.module.attendance.service.AttendanceExportRecordService; +import com.mortals.xhx.module.attendance.service.AttendanceGroupService; import com.mortals.xhx.module.attendance.service.AttendanceRecordHikService; import com.mortals.xhx.module.dept.model.DeptEntity; import com.mortals.xhx.module.dept.model.DeptQuery; @@ -32,6 +36,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.*; +import java.util.stream.Collectors; /** * 娴峰悍鑰冨嫟鎵撳崱璁板綍姹囨€讳俊鎭� @@ -55,6 +60,10 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro private AttendanceExportRecordService attendanceExportRecordService; @Autowired private AttendanceRecordHikService hikService; + @Autowired + private AttendanceGroupService groupService; + @Autowired + private AttendanceClassService classService; public AttendanceRecordHikController() { super.setModuleDesc("娴峰悍鑰冨嫟鎵撳崱璁板綍姹囨€讳俊鎭�"); @@ -170,20 +179,28 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro attendanceExportRecordEntity.setFilePath(filePath); if (query.getIdList() != null) { List<Long> idList = query.getIdList(); - String recordIdList = ""; - for (Long aLong : idList) { - if (recordIdList.equals("")) { - recordIdList = recordIdList + aLong; - } else { - recordIdList = recordIdList + "銆�" + aLong; - } - } - attendanceExportRecordEntity.setRecordIdList(recordIdList); + attendanceExportRecordEntity.setRecordIdList(idList.stream().map(i->i.toString()).collect(Collectors.joining(","))); } if (query.getAttendanceDateStart() != null) { String attendanceDate = query.getAttendanceDateStart() + "~" + query.getAttendanceDateEnd(); attendanceExportRecordEntity.setAttendanceDate(attendanceDate); } + + if(!ObjectUtils.isEmpty(query.getAttendanceGroupId())){ + AttendanceGroupEntity attendanceGroupEntity = groupService.get(query.getAttendanceGroupId()); + attendanceExportRecordEntity.setGroupName(attendanceGroupEntity==null?"":attendanceGroupEntity.getGroupName()); + } + + if(!ObjectUtils.isEmpty(query.getDeptId())){ + DeptEntity deptEntity = deptService.get(query.getDeptId(), context); + attendanceExportRecordEntity.setDeptName(deptEntity==null?"":deptEntity.getDeptName()); + } + + if(!ObjectUtils.isEmpty(query.getShiftsId())){ + AttendanceClassEntity attendanceClassEntity = classService.get(query.getShiftsId(), context); + attendanceExportRecordEntity.setClassName(attendanceClassEntity==null?"":attendanceClassEntity.getClassName()); + } + attendanceExportRecordEntity.setCreateUserId(context.getUser().getId()); attendanceExportRecordEntity.setCreateTime(new Date()); attendanceExportRecordEntity.setType(1); diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/model/PerformAttendAppealEntity.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/model/PerformAttendAppealEntity.java index bee03c2cd576362f023930572b30f45bc3ba062e..036b33049e889a9f86da2956f9c65a781f956119 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/model/PerformAttendAppealEntity.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/model/PerformAttendAppealEntity.java @@ -323,7 +323,7 @@ public class PerformAttendAppealEntity extends PerformAttendAppealVo { this.appealTime = null; - this.appealResult = null; + this.appealResult = 0; this.remark = ""; diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendAppealServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendAppealServiceImpl.java index 54a70d4091efd1953a35359d21e912f5a4515b89..55a5ae1d5d4e5ea93fede9a4df83c4eda88878ba 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendAppealServiceImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendAppealServiceImpl.java @@ -57,10 +57,8 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf private CheckGoworkRecordService checkGoworkRecordService; @Autowired private CheckOtherRecordService checkOtherRecordService; - @Autowired private PerformAttendAppealFilesService performAttendAppealFilesService; - @Autowired private IDingPersonService dingPersonService; @Autowired @@ -248,6 +246,21 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf } + @Override + protected void saveBefore(PerformAttendAppealEntity entity, Context context) throws AppException { + //鏍¢獙鏄惁瀛樺湪宸茬粡閫氳繃鐨勭敵璇� + + PerformAttendAppealQuery appealQuery = new PerformAttendAppealQuery(); + appealQuery.setCheckRecordId(entity.getCheckRecordId()); + appealQuery.setPerformType(entity.getPerformType()); + appealQuery.setAppealResult(AppealResultEnum.閫氳繃.getValue()); + int count = this.count(appealQuery, context); + if(count>0){ + throw new AppException("宸插瓨鍦ㄧ浉鍚岀殑閫氳繃鐢宠瘔锛屼笉瑕侀噸澶嶇敵璇夛紒"); + } + + } + @Override protected void saveAfter(PerformAttendAppealEntity entity, Context context) throws AppException { if (!ObjectUtils.isEmpty(entity.getPerformAttendAppealFilesList())) { diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendRecordServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendRecordServiceImpl.java index 66ad3df8eccb144baa83a4a94086f17ae68f87a9..b13d52c59c8da386057730a6f5b5fdc7d9bdb27f 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendRecordServiceImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformAttendRecordServiceImpl.java @@ -86,8 +86,9 @@ public class PerformAttendRecordServiceImpl extends AbstractCRUDServiceImpl<Perf } entity.setErrorResult(entity.getRuleName()); entity.setDeductTime(new Date()); - entity.setDeductPerson(context == null ? "" : context.getUser() == null ? "" : context.getUser().getRealName()); - + if(ObjectUtils.isEmpty(entity.getDeductPerson())){ + entity.setDeductPerson(context == null ? "" : context.getUser() == null ? "" : context.getUser().getRealName()); + } if (!ObjectUtils.isEmpty(entity.getAttendanceGroupId())) { AttendanceGroupEntity attendanceGroupEntity = attendanceGroupService.get(entity.getAttendanceGroupId()); entity.setAttendanceGroupName(attendanceGroupEntity == null ? "" : attendanceGroupEntity.getGroupName()); diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformComplainRecordServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformComplainRecordServiceImpl.java index 9b546ba275eb13ead2e16e45c552ce36a325a8f7..2e054711428890c38ddde0bebce83756cc2503d7 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformComplainRecordServiceImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformComplainRecordServiceImpl.java @@ -67,8 +67,9 @@ public class PerformComplainRecordServiceImpl extends AbstractCRUDServiceImpl<Pe } entity.setDeductTime(new Date()); - entity.setDeductPerson(context == null ? "" : context.getUser() == null ? "" : context.getUser().getRealName()); - + if(ObjectUtils.isEmpty(entity.getDeductPerson())){ + entity.setDeductPerson(context == null ? "" : context.getUser() == null ? "" : context.getUser().getRealName()); + } } @Override diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformEffectRecordServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformEffectRecordServiceImpl.java index a57f63a80973afe3a6ad63dff765d511b5b5f328..8bb50ec233e24803e8d84108c0cee323ac6746ce 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformEffectRecordServiceImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformEffectRecordServiceImpl.java @@ -66,8 +66,9 @@ public class PerformEffectRecordServiceImpl extends AbstractCRUDServiceImpl<Perf entity.setDeptName(staffCache == null ? "" : staffCache.getDeptName()); } entity.setDeductTime(new Date()); - entity.setDeductPerson(context == null ? "" : context.getUser() == null ? "" : context.getUser().getRealName()); - + if(ObjectUtils.isEmpty(entity.getDeductPerson())){ + entity.setDeductPerson(context == null ? "" : context.getUser() == null ? "" : context.getUser().getRealName()); + } } @Override diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformGoworkRecordServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformGoworkRecordServiceImpl.java index 06479cc699ce64202b018c0e5abb6a3ef3885dd0..32afbcd57a6fc3f1232be309d1ce588702b01d01 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformGoworkRecordServiceImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformGoworkRecordServiceImpl.java @@ -65,8 +65,9 @@ public class PerformGoworkRecordServiceImpl extends AbstractCRUDServiceImpl<Perf entity.setDeptName(staffCache == null ? "" : staffCache.getDeptName()); } entity.setDeductTime(new Date()); - entity.setDeductPerson(context == null ? "" : context.getUser() == null ? "" : context.getUser().getRealName()); - + if(ObjectUtils.isEmpty(entity.getDeductPerson())){ + entity.setDeductPerson(context == null ? "" : context.getUser() == null ? "" : context.getUser().getRealName()); + } } @Override diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformOtherRecordServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformOtherRecordServiceImpl.java index 41b73c774ed47513d8fe0597945f6e757b5f2e52..d3a960f1440d133893060e207997cfdc66c8c792 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformOtherRecordServiceImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformOtherRecordServiceImpl.java @@ -57,6 +57,7 @@ public class PerformOtherRecordServiceImpl extends AbstractCRUDServiceImpl<Perfo if (!ObjectUtils.isEmpty(entity.getRuleId())) { PerformRulesEntity rulesEntity = rulesService.getCache(entity.getRuleId().toString()); entity.setRuleName(rulesEntity.getName()); + entity.setRuleDesc(rulesEntity.getContent()); entity.setSubAddType(rulesEntity == null ? 1 : rulesEntity.getSubAddType()); } if (!ObjectUtils.isEmpty(entity.getStaffId())) { @@ -66,7 +67,10 @@ public class PerformOtherRecordServiceImpl extends AbstractCRUDServiceImpl<Perfo } entity.setDeductTime(new Date()); - entity.setDeductPerson(context == null ? "" : context.getUser() == null ? "" : context.getUser().getRealName()); + + if(ObjectUtils.isEmpty(entity.getDeductPerson())){ + entity.setDeductPerson(context == null ? "" : context.getUser() == null ? "" : context.getUser().getRealName()); + } } diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformReviewRecordServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformReviewRecordServiceImpl.java index 9a45ec5d40bf4572cbe4a33f8e3a4ee2498c5232..8d9504c578eb17a5222808e558e51871d483a613 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformReviewRecordServiceImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/perform/service/impl/PerformReviewRecordServiceImpl.java @@ -66,8 +66,9 @@ public class PerformReviewRecordServiceImpl extends AbstractCRUDServiceImpl<Perf entity.setDeptName(staffCache == null ? "" : staffCache.getDeptName()); } entity.setDeductTime(new Date()); - entity.setDeductPerson(context == null ? "" : context.getUser() == null ? "" : context.getUser().getRealName()); - + if(ObjectUtils.isEmpty(entity.getDeductPerson())){ + entity.setDeductPerson(context == null ? "" : context.getUser() == null ? "" : context.getUser().getRealName()); + } } @Override diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java index 132f14b14907015b8ba96f9d25afc0b210b696e1..7686b6d84ebbc4c35d5f708cfa36458415e9a73f 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java @@ -1,5 +1,6 @@ package com.mortals.xhx.module.staff.service; +import com.mortals.framework.common.Rest; import com.mortals.framework.model.Context; import com.mortals.framework.service.ICRUDCacheService; import com.mortals.xhx.module.staff.model.StaffEntity; @@ -21,4 +22,12 @@ public interface StaffService extends ICRUDCacheService<StaffEntity,Long> { StaffInfoVo queryAll(Context context); //缁熻鎵€鏈夊湪鑱屽憳宸� int queryAllPerson(); + + /** + * 鍚屾浜哄憳淇℃伅 + * @param context + * @return + */ + Rest<Void> syncPersons(Context context); + } \ No newline at end of file diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java index 855063ab6ebacd81229b49cf8fc2f92827c984ce..7d2f2e0c0ef139540878cdb3b3cb6e4c3768a5ff 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java @@ -1,6 +1,8 @@ package com.mortals.xhx.module.staff.service.impl; +import cn.hutool.core.date.DateUtil; 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.impl.AbstractCRUDCacheServiceImpl; @@ -10,7 +12,19 @@ import com.mortals.xhx.base.system.role.service.RoleUserService; import com.mortals.xhx.base.system.user.model.UserEntity; import com.mortals.xhx.base.system.user.service.UserService; import com.mortals.xhx.common.code.*; +import com.mortals.xhx.module.attendance.model.AttendanceStatEntity; +import com.mortals.xhx.module.attendance.model.AttendanceStatQuery; +import com.mortals.xhx.module.attendance.model.AttendanceVacationBalanceEntity; +import com.mortals.xhx.module.attendance.model.AttendanceVacationBalanceQuery; +import com.mortals.xhx.module.attendance.service.AttendanceStatService; +import com.mortals.xhx.module.attendance.service.AttendanceVacationBalanceService; +import com.mortals.xhx.module.dept.model.DeptEntity; +import com.mortals.xhx.module.dept.model.DeptQuery; import com.mortals.xhx.module.dept.service.DeptService; +import com.mortals.xhx.module.hik.person.model.req.person.PersonReq; +import com.mortals.xhx.module.hik.person.model.rsp.person.PersonDataInfo; +import com.mortals.xhx.module.hik.person.model.rsp.person.PersonInfo; +import com.mortals.xhx.module.hik.person.service.IHikPersonService; import com.mortals.xhx.module.staff.dao.StaffDao; import com.mortals.xhx.module.staff.dao.ibatis.StaffDaoImpl; import com.mortals.xhx.module.staff.dao.ibatis.StaffLeaveDaoImpl; @@ -18,6 +32,7 @@ import com.mortals.xhx.module.staff.model.StaffEntity; import com.mortals.xhx.module.staff.model.StaffQuery; import com.mortals.xhx.module.staff.model.vo.StaffInfoVo; 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; @@ -36,6 +51,7 @@ import java.util.stream.Collectors; * @date 2023-04-07 */ @Service("staffService") +@Slf4j public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, StaffEntity, Long> implements StaffService { @Autowired @@ -46,6 +62,15 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta @Autowired private RoleUserService roleUserService; + @Autowired + private IHikPersonService hikPersonService; + + @Autowired + private AttendanceStatService attendanceStatService; + + @Autowired + private AttendanceVacationBalanceService balanceService; + @Override protected String getExtKey(StaffEntity data) { //宸ュ彿浣滀负redis 鎵╁睍key @@ -57,10 +82,13 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta protected void saveBefore(StaffEntity entity, Context context) throws AppException { int count = this.count(new StaffQuery().workNum(entity.getWorkNum()), context); if (count > 0) { - throw new AppException("宸ュ彿閲嶅锛�"); + throw new AppException("宸ュ彿閲嶅锛佸伐鍙�:" + entity.getWorkNum()); } } + + + @Override public StaffInfoVo queryAll(Context context) { StaffInfoVo staffInfoVo = new StaffInfoVo(); @@ -94,12 +122,102 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta return staffEntities.size(); } + @Override + public Rest<Void> syncPersons(Context context) { + log.info("鍚屾浜哄憳锛�"); + + PersonReq personReq = new PersonReq(); + personReq.setPageNo(1); + personReq.setPageSize(1000); + Rest<PersonDataInfo> personRest = hikPersonService.getPersonList(personReq); + if (personRest.getCode() == YesNoEnum.YES.getValue()) { + List<PersonInfo> personInfoList = personRest.getData().getList(); + for (PersonInfo personInfo : personInfoList) { + StaffEntity staffEntity = this.getExtCache(StrUtil.padPre(personInfo.getJobNo(), 8, "0")); + DeptEntity deptEntity = deptService.selectOne(new DeptQuery().deptCode(personInfo.getOrgIndexCode())); + //鍒ゆ柇鏈湴鏁版嵁鏄惁涓虹┖ + if (ObjectUtils.isEmpty(staffEntity)) { + //鏂板鍛樺伐淇℃伅 + staffEntity = new StaffEntity(); + staffEntity.initAttrValue(); + if (!ObjectUtils.isEmpty(deptEntity)) { + staffEntity.setDeptId(deptEntity.getId()); + } + staffEntity.setName(personInfo.getPersonName()); + staffEntity.setRemarkId(personInfo.getPersonId()); + staffEntity.setPicUri(personInfo.getPersonPhoto().getPicUri()); + staffEntity.setServerIndexCode(personInfo.getPersonPhoto().getServerIndexCode()); + staffEntity.setDeptName(personInfo.getOrgName()); + staffEntity.setGender(personInfo.getGender()); + staffEntity.setWorkNum(personInfo.getJobNo()); + staffEntity.setPhoneNumber(personInfo.getPhoneNo()); + staffEntity.setCreateUserId(1L); + staffEntity.setCreateTime(new Date()); + this.save(staffEntity); + + } else { + //鏇存柊 + if (!ObjectUtils.isEmpty(deptEntity)) { + staffEntity.setDeptId(deptEntity.getId()); + } + staffEntity.setName(personInfo.getPersonName()); + staffEntity.setRemarkId(personInfo.getPersonId()); + staffEntity.setPicUri(personInfo.getPersonPhoto().getPicUri()); + staffEntity.setServerIndexCode(personInfo.getPersonPhoto().getServerIndexCode()); + staffEntity.setDeptName(personInfo.getOrgName()); + staffEntity.setGender(personInfo.getGender()); + staffEntity.setWorkNum(personInfo.getJobNo()); + staffEntity.setPhoneNumber(personInfo.getPhoneNo()); + staffEntity.setUpdateUserId(1L); + staffEntity.setUpdateTime(new Date()); + this.update(staffEntity); + } + } + } + + return Rest.ok(); + } + @Override protected void saveAfter(StaffEntity entity, Context context) throws AppException { + super.saveAfter(entity, context); + //鍒濆鍖� + int count = balanceService.count(new AttendanceVacationBalanceQuery().staffId(entity.getId()), context); + if(count==0){ + AttendanceVacationBalanceEntity balanceEntity = new AttendanceVacationBalanceEntity(); + balanceEntity.initAttrValue(); + balanceEntity.setStaffId(entity.getId()); + balanceEntity.setStaffName(entity.getName()); + balanceEntity.setDeptId(entity.getDeptId()); + balanceEntity.setDeptName(entity.getDeptName()); + balanceEntity.setCreateUserId(1L); + balanceEntity.setCreateTime(new Date()); + balanceService.save(balanceEntity); + } + AttendanceStatQuery attendanceStatQuery = new AttendanceStatQuery(); + attendanceStatQuery.setYear(DateUtil.year(new Date())); + attendanceStatQuery.setMonth(DateUtil.month(new Date())+1); + attendanceStatQuery.setDay(DateUtil.dayOfMonth(new Date())); + attendanceStatQuery.setStaffId(entity.getId()); + int count1 = attendanceStatService.count(attendanceStatQuery, context); + if(count1==0){ + AttendanceStatEntity attendanceStatEntity = new AttendanceStatEntity(); + attendanceStatEntity.initAttrValue(); + attendanceStatEntity.setStaffId(entity.getId()); + attendanceStatEntity.setStaffName(entity.getName()); + attendanceStatEntity.setDeptId(entity.getDeptId()); + attendanceStatEntity.setDeptName(entity.getDeptName()); + attendanceStatEntity.setPhoneNumer(entity.getPhoneNumber()); + attendanceStatEntity.setYear(DateUtil.year(new Date())); + attendanceStatEntity.setMonth(DateUtil.month(new Date())+1); + attendanceStatEntity.setDay(DateUtil.dayOfMonth(new Date())); + attendanceStatEntity.setCreateUserId(1L); + attendanceStatEntity.setCreateTime(new Date()); + attendanceStatService.save(attendanceStatEntity); + } try { UserEntity userEntity = new UserEntity(); - if (ObjectUtils.isEmpty(entity.getLoginName())) { //濮撳悕鍔犲伐鍙蜂綔涓虹櫥褰曞悕 entity.setLoginName(entity.getName() + entity.getWorkNum()); @@ -130,9 +248,9 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta } } catch (Exception e) { - throw new RuntimeException(e); + log.error("淇濆瓨绯荤粺鐢ㄦ埛寮傚父!",e); } - super.saveAfter(entity, context); + } diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/web/StaffController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/web/StaffController.java index 0ac8c63d5b09915d457aa782c2c6541b5562fd2d..3d49ab3964634738fb33143b4e1afcc91a10d8e0 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/web/StaffController.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/web/StaffController.java @@ -1,9 +1,13 @@ package com.mortals.xhx.module.staff.web; +import com.alibaba.fastjson.JSONObject; +import com.mortals.framework.common.Rest; import com.mortals.framework.exception.AppException; import com.mortals.framework.model.Context; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.xhx.base.system.param.service.ParamService; +import com.mortals.xhx.common.code.YesNoEnum; +import com.mortals.xhx.module.attendance.model.vo.AttendStatInfo; import com.mortals.xhx.module.dept.model.DeptEntity; import com.mortals.xhx.module.dept.model.DeptQuery; import com.mortals.xhx.module.dept.model.DeptTreeSelect; @@ -16,6 +20,7 @@ import com.mortals.xhx.module.staff.model.vo.HolidayListVo; import com.mortals.xhx.module.staff.model.vo.StaffInfoVo; import com.mortals.xhx.module.staff.service.StaffService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -109,6 +114,29 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ return super.saveAfter(entity, model, context); } + /** + * 鍚屾鏇存柊浜哄憳 + */ + @PostMapping(value = "syncPersons") + public String syncPersons() { + JSONObject jsonObject = new JSONObject(); + String busiDesc = this.getModuleDesc() + "鍚屾"; + try { + Rest<Void> rest = this.service.syncPersons(getContext()); + if (rest.getCode() == YesNoEnum.NO.getValue()) { + throw new AppException("鍚屾寮傚父锛�"); + } + recordSysLog(request, busiDesc + " 銆愭垚鍔熴€�"); + jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); + jsonObject.put(KEY_RESULT_MSG, busiDesc + " 銆愭垚鍔熴€�"); + } catch (Exception e) { + log.error("鍚屾浜哄憳", e); + jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE); + jsonObject.put(KEY_RESULT_MSG, super.convertException(e)); + } + return jsonObject.toJSONString(); + } + @Override public String delete(Long[] id) { return super.delete(id);