Commit 9d25b0a7 authored by 姬鋆屾's avatar 姬鋆屾
parents 0c091c46 59872705
...@@ -141,6 +141,13 @@ ...@@ -141,6 +141,13 @@
<!-- <systemPath>${project.basedir}/src/main/resources/lib/artemis-http-client-1.1.8.jar</systemPath>--> <!-- <systemPath>${project.basedir}/src/main/resources/lib/artemis-http-client-1.1.8.jar</systemPath>-->
</dependency> </dependency>
<!--dingdingtalk sdk-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dingtalk</artifactId>
<version>2.0.19</version>
</dependency>
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
......
package com.mortals.xhx.busiz.dingtalk.api;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.busiz.dingtalk.config.TalkConfiguration;
import com.mortals.xhx.busiz.dingtalk.req.DingTalkBaseReq;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.pdu.ApiRespPdu;
import lombok.extern.apachecommons.CommonsLog;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 钉钉相关外部接口
*
* @Author:
*/
@RestController
@Slf4j
public class TalkApiController {
@Autowired
private TalkConfiguration talkConfiguration;
/**
* 获取token
*
* @return
*/
@PostMapping("/dingtalk/gettoken")
public Rest<String> getToken(@RequestBody DingTalkBaseReq dingTalkBaseReq) {
log.info("收到【getToken】请求【请求体】--> {}", JSON.toJSONString(dingTalkBaseReq));
try {
// DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
// OapiGettokenRequest req = new OapiGettokenRequest();
// req.setHttpMethod("GET");
// OapiGettokenResponse rsp = client.execute(req);
/* DingTalkClient client = new DefaultDingTalkClient(talkConfiguration.getGetTokneUrl());
OapiGettokenRequest req = new OapiGettokenRequest();
req.setAppkey(apiKey);
req.setAppsecret(appsecret);
req.setHttpMethod("GET");
OapiGettokenResponse rsp = client.execute(req);
log.info("gettoken rsp:" + rsp.getBody());
if (rsp.getErrcode() == 0) {
apiRespPdu.setData(rsp.getAccessToken());
} else {
throw new AppException(String.format("errorCode:%s,errorMsg:%s", rsp.getErrcode(), rsp.getErrmsg()));
}
*/
} catch (Exception e) {
log.error("异常", e);
return Rest.fail(e.getMessage());
}
return Rest.ok();
}
}
package com.mortals.xhx.busiz.dingtalk.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
/**
* 钉钉配置
*
* @Author: ZXF
*/
@Data
@Configuration
public class TalkConfiguration {
/**
* AgentId
*/
@Value("${dingtalk.agentId:''}")
private String getAgentId;
/**
* getToken
*/
@Value("${dingtalk.gettoken:''}")
private String getTokneUrl;
/**
* getbymobile
*/
@Value("${dingtalk.getbymobile:''}")
private String getbymobile;
/**
* getDeptbyUser
*/
@Value("${dingtalk.getDeptbyUser:''}")
private String getDeptbyUser;
/**
* workCreate
*/
@Value("${dingtalk.workCreate:''}")
private String workCreate;
/**
* processCode
*/
@Value("${dingtalk.processCode:''}")
private String processCode;
/**
* aesToken
*/
@Value("${dingtalk.aesToken:''}")
private String aesToken;
/**
* aseKey
*/
@Value("${dingtalk.aesKey:''}")
private String aesKey;
/**
* ownerKey
*/
@Value("${dingtalk.ownerKey:''}")
private String ownerKey;
}
package com.mortals.xhx.busiz.dingtalk.req;
import lombok.Data;
import org.springframework.web.bind.annotation.RequestParam;
@Data
public class DingTalkBaseReq {
private String apiKey;
private String appsecret;
}
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 员工状态
* @author
*
*/
public enum StaffSatusEnum {
正式(1, "正式"),
试用(2, "试用"),
离职(3, "离职"),
;
private int value;
private String desc;
StaffSatusEnum(int value, String desc) {
this.value = value;
this.desc = desc;
}
public int getValue() {
return this.value;
}
public String getDesc() {
return desc;
}
public static StaffSatusEnum getByValue(int value) {
for (StaffSatusEnum examStatus : StaffSatusEnum.values()) {
if (examStatus.getValue() == value) {
return examStatus;
}
}
return null;
}
/**
* 获取Map集合
* @param eItem 不包含项
* @return
*/
public static Map<String,String> getEnumMap(int... eItem) {
Map<String,String> resultMap= new LinkedHashMap<String,String>();
for (StaffSatusEnum item : StaffSatusEnum.values()) {
try{
boolean hasE = false;
for (int e : eItem){
if(item.getValue()==e){
hasE = true;
break;
}
}
if(!hasE){
resultMap.put(item.getValue()+"", item.getDesc());
}
}catch(Exception ex){
}
}
return resultMap;
}
}
...@@ -116,7 +116,10 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -116,7 +116,10 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
AttendanceRecordHikEntity recordHikEntity = new AttendanceRecordHikEntity(); AttendanceRecordHikEntity recordHikEntity = new AttendanceRecordHikEntity();
recordHikEntity.initAttrValue(); recordHikEntity.initAttrValue();
StaffEntity staffCache = staffService.getExtCache(item.getJobNo()); StaffEntity staffCache = staffService.getExtCache(item.getJobNo());
if (ObjectUtils.isEmpty(staffCache)) return null; if (ObjectUtils.isEmpty(staffCache)) {
log.info("staff is null !staffCode:{}",item.getJobNo());
return null;
}
recordHikEntity.setStaffId(staffCache.getId()); recordHikEntity.setStaffId(staffCache.getId());
recordHikEntity.setStaffName(staffCache.getName()); recordHikEntity.setStaffName(staffCache.getName());
...@@ -134,11 +137,11 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -134,11 +137,11 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
recordHikEntity.setCreateUserName("system"); recordHikEntity.setCreateUserName("system");
recordHikEntity.setCreateUserId(1L); recordHikEntity.setCreateUserId(1L);
return recordHikEntity; return recordHikEntity;
}).collect(Collectors.toList()); }).filter(f->f!=null).collect(Collectors.toList());
log.info("attRecords size:{}", attRecords.size()); 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()); 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(); AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery();
......
...@@ -54,18 +54,11 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -54,18 +54,11 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
@Autowired @Autowired
private StaffService staffService; private StaffService staffService;
@Autowired
private DeptDao deptDao;
@Autowired @Autowired
private DeptService deptService; private DeptService deptService;
@Autowired @Autowired
private StaffService service; private StaffService service;
@Autowired @Autowired
private AttendanceStatService attendanceStatService; private AttendanceStatService attendanceStatService;
...@@ -79,12 +72,10 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -79,12 +72,10 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
public void excuteTask(ITask task) throws AppException { public void excuteTask(ITask task) throws AppException {
log.info("同步用户--部门"); log.info("同步用户--部门");
try { try {
//同步部门 //同步部门
syncDepts(); syncDepts();
//同步员工 //同步员工
syncPersons(); syncPersons();
} catch (Exception e) { } catch (Exception e) {
log.error("同步人事异常", e); log.error("同步人事异常", e);
} }
...@@ -100,21 +91,21 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -100,21 +91,21 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
for (PersonInfo personInfo : personInfoList) { for (PersonInfo personInfo : personInfoList) {
StaffEntity staffEntity = staffService.getExtCache(personInfo.getJobNo()); StaffEntity staffEntity = staffService.getExtCache(personInfo.getJobNo());
DeptEntity deptEntity = deptService.selectOne(new DeptQuery().deptCode(personInfo.getOrgIndexCode())); DeptEntity deptEntity = deptService.selectOne(new DeptQuery().deptCode(personInfo.getOrgIndexCode()));
AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId())); // AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId()));
AttendanceStatEntity statEntity = attendanceStatService.selectOne(new AttendanceStatQuery().staffId(staffEntity.getId())); // AttendanceStatEntity statEntity = attendanceStatService.selectOne(new AttendanceStatQuery().staffId(staffEntity.getId()));
//判断本地数据是否为空 //判断本地数据是否为空
if (ObjectUtils.isEmpty(staffEntity)) { if (ObjectUtils.isEmpty(staffEntity)) {
//新增员工信息 //新增员工信息
staffEntity = new StaffEntity(); staffEntity = new StaffEntity();
staffEntity.initAttrValue(); staffEntity.initAttrValue();
if (ObjectUtils.isEmpty(deptEntity)) { if (!ObjectUtils.isEmpty(deptEntity)) {
staffEntity.setDeptId(deptEntity.getId()); staffEntity.setDeptId(deptEntity.getId());
} }
staffEntity.setName(personInfo.getPersonName()); staffEntity.setName(personInfo.getPersonName());
staffEntity.setRemarkId(personInfo.getPersonId()); staffEntity.setRemarkId(personInfo.getPersonId());
staffEntity.setPicUri(personInfo.getPersonPhoto().getPicUri()); staffEntity.setPicUri(personInfo.getPersonPhoto().getPicUri());
staffEntity.setServerIndexCode(personInfo.getPersonPhoto().getServerIndexCode()); staffEntity.setServerIndexCode(personInfo.getPersonPhoto().getServerIndexCode());
staffEntity.setDeptName(personInfo.getOrgPathName()); staffEntity.setDeptName(personInfo.getOrgName());
staffEntity.setGender(personInfo.getGender()); staffEntity.setGender(personInfo.getGender());
staffEntity.setWorkNum(personInfo.getJobNo()); staffEntity.setWorkNum(personInfo.getJobNo());
staffEntity.setPhoneNumber(personInfo.getPhoneNo()); staffEntity.setPhoneNumber(personInfo.getPhoneNo());
...@@ -122,6 +113,18 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -122,6 +113,18 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
staffEntity.setCreateTime(new Date()); staffEntity.setCreateTime(new Date());
service.save(staffEntity); service.save(staffEntity);
AttendanceVacationBalanceEntity balanceEntity = new AttendanceVacationBalanceEntity();
balanceEntity.initAttrValue();
balanceEntity.setStaffId(staffEntity.getId());
balanceEntity.setStaffName(staffEntity.getName());
balanceEntity.setDeptId(staffEntity.getDeptId());
balanceEntity.setDeptName(staffEntity.getDeptName());
balanceEntity.setCreateUserId(1L);
balanceEntity.setCreateTime(new Date());
balanceService.save(balanceEntity);
//AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId()));
AttendanceStatEntity attendanceStatEntity = new AttendanceStatEntity(); AttendanceStatEntity attendanceStatEntity = new AttendanceStatEntity();
attendanceStatEntity.initAttrValue(); attendanceStatEntity.initAttrValue();
attendanceStatEntity.setStaffId(staffEntity.getId()); attendanceStatEntity.setStaffId(staffEntity.getId());
...@@ -153,17 +156,6 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -153,17 +156,6 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
attendanceStatEntity.setHomeLeave(balanceEntity.getHomeLeave()); attendanceStatEntity.setHomeLeave(balanceEntity.getHomeLeave());
attendanceStatEntity.setPersonalLeave(balanceEntity.getPersonalLeaveDays()); attendanceStatEntity.setPersonalLeave(balanceEntity.getPersonalLeaveDays());
attendanceStatService.save(attendanceStatEntity); attendanceStatService.save(attendanceStatEntity);
AttendanceVacationBalanceEntity attendanceVacationBalanceEntity = new AttendanceVacationBalanceEntity();
attendanceVacationBalanceEntity.initAttrValue();
attendanceVacationBalanceEntity.setStaffId(staffEntity.getId());
attendanceVacationBalanceEntity.setStaffName(staffEntity.getName());
attendanceVacationBalanceEntity.setDeptId(deptEntity.getId());
attendanceVacationBalanceEntity.setDeptName(deptEntity.getDeptName());
attendanceVacationBalanceEntity.setCreateTime(new Date());
attendanceVacationBalanceEntity.setCreateUserId(1L);
balanceService.save(attendanceVacationBalanceEntity);
//统计各级部门员工数量 todo 优化统计 //统计各级部门员工数量 todo 优化统计
String ancestor = deptEntity.getAncestors().split(",", 2)[1]; String ancestor = deptEntity.getAncestors().split(",", 2)[1];
String[] ancestors = ancestor.split(","); String[] ancestors = ancestor.split(",");
...@@ -174,24 +166,22 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -174,24 +166,22 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
deptService.update(deptEntity2); deptService.update(deptEntity2);
} }
} }
} else { } else {
//更新 //更新
if (ObjectUtils.isEmpty(deptEntity)) { if (!ObjectUtils.isEmpty(deptEntity)) {
staffEntity.setDeptId(deptEntity.getId()); staffEntity.setDeptId(deptEntity.getId());
} }
staffEntity.setName(personInfo.getPersonName()); staffEntity.setName(personInfo.getPersonName());
staffEntity.setRemarkId(personInfo.getPersonId()); staffEntity.setRemarkId(personInfo.getPersonId());
staffEntity.setPicUri(personInfo.getPersonPhoto().getPicUri()); staffEntity.setPicUri(personInfo.getPersonPhoto().getPicUri());
staffEntity.setServerIndexCode(personInfo.getPersonPhoto().getServerIndexCode()); staffEntity.setServerIndexCode(personInfo.getPersonPhoto().getServerIndexCode());
staffEntity.setDeptName(personInfo.getOrgPathName()); staffEntity.setDeptName(personInfo.getOrgName());
staffEntity.setGender(personInfo.getGender()); staffEntity.setGender(personInfo.getGender());
staffEntity.setWorkNum(personInfo.getJobNo()); staffEntity.setWorkNum(personInfo.getJobNo());
staffEntity.setPhoneNumber(personInfo.getPhoneNo()); staffEntity.setPhoneNumber(personInfo.getPhoneNo());
staffEntity.setUpdateUserId(1L); staffEntity.setUpdateUserId(1L);
staffEntity.setUpdateTime(new Date()); staffEntity.setUpdateTime(new Date());
service.update(staffEntity); service.update(staffEntity);
//统计各级部门员工数量 //统计各级部门员工数量
String ancestor = deptEntity.getAncestors().split(",", 2)[1]; String ancestor = deptEntity.getAncestors().split(",", 2)[1];
String[] ancestors = ancestor.split(","); String[] ancestors = ancestor.split(",");
...@@ -247,12 +237,8 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -247,12 +237,8 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
} }
} }
} }
@Override @Override
public void stopTask(ITask task) throws AppException { public void stopTask(ITask task) throws AppException {
} }
} }
...@@ -17,6 +17,6 @@ public interface AttendanceRecordHikService extends ICRUDService<AttendanceRecor ...@@ -17,6 +17,6 @@ public interface AttendanceRecordHikService extends ICRUDService<AttendanceRecor
* 将原始数据导入打卡记录表 * 将原始数据导入打卡记录表
* @param entity * @param entity
*/ */
public void addAttendanceRecord(AttendanceRecordHikEntity entity, Context context) throws Exception; void addAttendanceRecord(AttendanceRecordHikEntity entity, Context context) throws Exception;
} }
package com.mortals.xhx.module.attendance.service.impl; package com.mortals.xhx.module.attendance.service.impl;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
...@@ -12,18 +13,19 @@ import com.mortals.xhx.module.attendance.model.AttendanceRecordDetailEntity; ...@@ -12,18 +13,19 @@ import com.mortals.xhx.module.attendance.model.AttendanceRecordDetailEntity;
import com.mortals.xhx.module.attendance.model.AttendanceRecordDetailQuery; import com.mortals.xhx.module.attendance.model.AttendanceRecordDetailQuery;
import com.mortals.xhx.module.attendance.service.AttendanceRecordDetailService; import com.mortals.xhx.module.attendance.service.AttendanceRecordDetailService;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.util.Date; import java.util.Date;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* AttendanceRecordService * AttendanceRecordService
* 考勤打卡记录信息 service实现 * 考勤打卡记录信息 service实现
* *
* @author zxfei * @author zxfei
* @date 2023-04-07 * @date 2023-04-07
*/ */
@Service("attendanceRecordService") @Service("attendanceRecordService")
public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<AttendanceRecordDao, AttendanceRecordEntity, Long> implements AttendanceRecordService { public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<AttendanceRecordDao, AttendanceRecordEntity, Long> implements AttendanceRecordService {
@Autowired @Autowired
...@@ -32,12 +34,10 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda ...@@ -32,12 +34,10 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda
@Override @Override
protected void findAfter(AttendanceRecordEntity params, PageInfo pageInfo, Context context, List<AttendanceRecordEntity> list) throws AppException { protected void findAfter(AttendanceRecordEntity params, PageInfo pageInfo, Context context, List<AttendanceRecordEntity> list) throws AppException {
list.stream().map(item->{ list.stream().map(item -> {
//chax
List<AttendanceRecordDetailEntity> attendanceRecordDetailEntities = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery().recordId(item.getId())); List<AttendanceRecordDetailEntity> attendanceRecordDetailEntities = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery().recordId(item.getId()));
item.setAttendanceRecordDetailList(attendanceRecordDetailEntities); item.setAttendanceRecordDetailList(attendanceRecordDetailEntities);
return item; return item;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
...@@ -46,11 +46,10 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda ...@@ -46,11 +46,10 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda
@Override @Override
protected void saveAfter(AttendanceRecordEntity entity, Context context) throws AppException { protected void saveAfter(AttendanceRecordEntity entity, Context context) throws AppException {
if(!ObjectUtils.isEmpty(entity.getAttendanceRecordDetailList())){ if (!ObjectUtils.isEmpty(entity.getAttendanceRecordDetailList())) {
entity.getAttendanceRecordDetailList().stream().peek(item->{ entity.getAttendanceRecordDetailList().stream().peek(item -> {
item.setRecordId(entity.getId()); item.setRecordId(entity.getId());
item.setCreateUser(context==null?"admin":context.getUser().getLoginName()); item.setCreateUserId(this.getContextUserId(context));
item.setCreateUserId(context==null?1L:context.getUser().getId());
item.setCreateTime(new Date()); item.setCreateTime(new Date());
}).count(); }).count();
attendanceRecordDetailService.save(entity.getAttendanceRecordDetailList()); attendanceRecordDetailService.save(entity.getAttendanceRecordDetailList());
...@@ -60,16 +59,14 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda ...@@ -60,16 +59,14 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda
@Override @Override
protected void updateAfter(AttendanceRecordEntity entity, Context context) throws AppException { protected void updateAfter(AttendanceRecordEntity entity, Context context) throws AppException {
if(!ObjectUtils.isEmpty(entity.getAttendanceRecordDetailList())){ if (!ObjectUtils.isEmpty(entity.getAttendanceRecordDetailList())) {
Long[] attendanceRecordDetailIds = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery().recordId(entity.getId())).stream().map(AttendanceRecordDetailEntity::getId).toArray(Long[]::new); Long[] attendanceRecordDetailIds = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery().recordId(entity.getId())).stream().map(AttendanceRecordDetailEntity::getId).toArray(Long[]::new);
attendanceRecordDetailService.remove(attendanceRecordDetailIds,context); attendanceRecordDetailService.remove(attendanceRecordDetailIds, context);
entity.getAttendanceRecordDetailList().stream().peek(item ->{ entity.getAttendanceRecordDetailList().stream().peek(item -> {
item.setRecordId(entity.getId()); item.setRecordId(entity.getId());
item.setCreateUser(context==null?"admin":context.getUser().getLoginName()); item.setCreateUserId(this.getContextUserId(context));
item.setCreateUserId(context==null?1L:context.getUser().getId());
item.setCreateTime(new Date()); item.setCreateTime(new Date());
item.setUpdateUser(context==null?"admin":context.getUser().getLoginName()); item.setUpdateUserId(this.getContextUserId(context));
item.setUpdateUserId(context==null?1L:context.getUser().getId());
item.setUpdateTime(new Date()); item.setUpdateTime(new Date());
}).count(); }).count();
attendanceRecordDetailService.save(entity.getAttendanceRecordDetailList()); attendanceRecordDetailService.save(entity.getAttendanceRecordDetailList());
...@@ -80,7 +77,7 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda ...@@ -80,7 +77,7 @@ public class AttendanceRecordServiceImpl extends AbstractCRUDServiceImpl<Attenda
@Override @Override
protected void removeAfter(Long[] ids, Context context, int result) throws AppException { protected void removeAfter(Long[] ids, Context context, int result) throws AppException {
List<AttendanceRecordDetailEntity> attendanceRecordDetaillist = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery().recordIdList(Arrays.asList(ids))); List<AttendanceRecordDetailEntity> attendanceRecordDetaillist = attendanceRecordDetailService.find(new AttendanceRecordDetailQuery().recordIdList(Arrays.asList(ids)));
attendanceRecordDetailService.removeList(attendanceRecordDetaillist,context); attendanceRecordDetailService.removeList(attendanceRecordDetaillist, context);
super.removeAfter(ids, context, result); super.removeAfter(ids, context, result);
} }
} }
...@@ -36,7 +36,7 @@ public class HikDoorServiceImpl extends AbstractHikService implements IHikDoorSe ...@@ -36,7 +36,7 @@ public class HikDoorServiceImpl extends AbstractHikService implements IHikDoorSe
try { try {
log.info("door events req=>{}", JSON.toJSONString(doorEventReq)); log.info("door events req=>{}", JSON.toJSONString(doorEventReq));
String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(doorEventReq), null, null, "application/json"); String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(doorEventReq), null, null, "application/json");
// log.info("door events error resp=>{}", respJson); //log.info("door events error resp=>{}", respJson);
HikApiRest<DoorEventDataInfo> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<DoorEventDataInfo>>() { HikApiRest<DoorEventDataInfo> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<DoorEventDataInfo>>() {
}); });
log.info("door events resp=>{}", rest.getCode()); log.info("door events resp=>{}", rest.getCode());
......
...@@ -7,19 +7,17 @@ import java.util.Date; ...@@ -7,19 +7,17 @@ import java.util.Date;
@Data @Data
public class PersonInfo{ public class PersonInfo{
private String personId;
private String personName;
private int gender; private int gender;
private String orgPath; private String orgPath;
private String orgPathName;
private String orgIndexCode; private String orgIndexCode;
private String orgName;
private int certificateType;
private String certificateNo;
@JSONField(format = "yyyy-MM-dd'T'HH:mm:ssXXX") @JSONField(format = "yyyy-MM-dd'T'HH:mm:ssXXX")
private Date updateTime; private Date updateTime;
private String certificateNo;
private String phoneNo; private String phoneNo;
private String personName;
private PersonPhoto personPhoto; private PersonPhoto personPhoto;
@JSONField(format = "yyyy-MM-dd'T'HH:mm:ssXXX")
private Date createTime;
private String jobNo; private String jobNo;
private String personId;
private int certificateType;
} }
\ No newline at end of file
...@@ -36,6 +36,7 @@ public class HikPersonServiceImpl extends AbstractHikService implements IHikPers ...@@ -36,6 +36,7 @@ public class HikPersonServiceImpl extends AbstractHikService implements IHikPers
path.put(protocol, getCamsApi); path.put(protocol, getCamsApi);
try { try {
String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(personReq), null, null, "application/json"); String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(personReq), null, null, "application/json");
log.info("person resp=>{}", respJson);
HikApiRest<PersonDataInfo> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<PersonDataInfo>>() { HikApiRest<PersonDataInfo> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<PersonDataInfo>>() {
}); });
if ("0".equals(rest.getCode())) { if ("0".equals(rest.getCode())) {
......
package com.mortals.xhx.module.staff.service.impl; package com.mortals.xhx.module.staff.service.impl;
import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
import com.mortals.xhx.common.code.StaffSatusEnum;
import com.mortals.xhx.common.code.StaffTypeEnum;
import com.mortals.xhx.common.code.StatusEnum;
import com.mortals.xhx.module.staff.dao.StaffDao; 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.StaffDaoImpl;
import com.mortals.xhx.module.staff.dao.ibatis.StaffLeaveDaoImpl; import com.mortals.xhx.module.staff.dao.ibatis.StaffLeaveDaoImpl;
import com.mortals.xhx.module.staff.model.StaffEntity; 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.model.vo.StaffInfoVo;
import com.mortals.xhx.module.staff.service.StaffService; import com.mortals.xhx.module.staff.service.StaffService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* StaffService * StaffService
...@@ -22,14 +29,6 @@ import java.util.List; ...@@ -22,14 +29,6 @@ import java.util.List;
@Service("staffService") @Service("staffService")
public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, StaffEntity, Long> implements StaffService { public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, StaffEntity, Long> implements StaffService {
@Autowired
private StaffDaoImpl staffDao;
@Autowired
private StaffLeaveDaoImpl staffLeaveDao;
@Override @Override
protected String getExtKey(StaffEntity data) { protected String getExtKey(StaffEntity data) {
//工号作为redis 扩展key //工号作为redis 扩展key
...@@ -40,26 +39,33 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta ...@@ -40,26 +39,33 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
public StaffInfoVo queryAll() { public StaffInfoVo queryAll() {
StaffInfoVo staffInfoVo = new StaffInfoVo(); StaffInfoVo staffInfoVo = new StaffInfoVo();
//在职 //在职
staffInfoVo.setInWorkStaff(staffDao.queryInWork()); StaffQuery staffQuery = new StaffQuery();
staffQuery.setStatusList(Arrays.asList(StaffSatusEnum.正式.getValue(), StaffSatusEnum.试用.getValue()));
List<StaffEntity> staffEntities = this.find(staffQuery);
staffInfoVo.setInWorkStaff(staffEntities.size());
//全职 //全职
staffInfoVo.setFullStaff(staffDao.queryFull()); Map<Integer, Long> collect = staffEntities.stream().collect(Collectors.groupingBy(x -> x.getStaffType(), Collectors.counting()));
//正式 staffInfoVo.setFullStaff(collect.getOrDefault(StaffTypeEnum.全职.getValue(), 0L).intValue());
staffInfoVo.setFormalStaff(staffDao.queryFormal()); //实习
staffInfoVo.setPricateStaff(collect.getOrDefault(StaffTypeEnum.实习.getValue(), 0L).intValue());
//兼职 //兼职
staffInfoVo.setConcurrentlyStaff(staffDao.queryConcurrently()); staffInfoVo.setConcurrentlyStaff(collect.getOrDefault(StaffTypeEnum.兼职.getValue(), 0L).intValue());
//试用 //试用
staffInfoVo.setOnTrialStaff(staffDao.queryOnTrial()); staffInfoVo.setOnTrialStaff(this.find(new StaffQuery().status(StaffSatusEnum.试用.getValue())).size());
//实习 //正式
staffInfoVo.setPricateStaff(staffDao.queryPricate()); staffInfoVo.setFormalStaff(this.find(new StaffQuery().status(StaffSatusEnum.正式.getValue())).size());
//待离职 //待离职
staffInfoVo.setResignationStaff(staffLeaveDao.queryResignation()); staffInfoVo.setResignationStaff(this.find(new StaffQuery().status(StaffSatusEnum.离职.getValue())).size());
return staffInfoVo; return staffInfoVo;
} }
@Override @Override
public int queryAllPerson() { public int queryAllPerson() {
return staffDao.queryInWork(); StaffQuery staffQuery = new StaffQuery();
staffQuery.setStatusList(Arrays.asList(StaffSatusEnum.正式.getValue(), StaffSatusEnum.试用.getValue()));
List<StaffEntity> staffEntities = this.find(staffQuery);
return staffEntities.size();
} }
} }
\ No newline at end of file
...@@ -76,7 +76,6 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ ...@@ -76,7 +76,6 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ
//todo 员工统计信息 //todo 员工统计信息
List<HolidayListVo> holidayListVos = new ArrayList<>(); List<HolidayListVo> holidayListVos = new ArrayList<>();
HolidayListVo vo =new HolidayListVo(); HolidayListVo vo =new HolidayListVo();
StaffEntity staffEntity = this.service.get(id); StaffEntity staffEntity = this.service.get(id);
vo.setWorkName(staffEntity.getName()); vo.setWorkName(staffEntity.getName());
vo.setWorkStatus(String.valueOf(staffEntity.getStatus())); vo.setWorkStatus(String.valueOf(staffEntity.getStatus()));
...@@ -96,9 +95,7 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ ...@@ -96,9 +95,7 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ
vo.setPaternityLeaveDay("10"); vo.setPaternityLeaveDay("10");
holidayListVos.add(vo); holidayListVos.add(vo);
entity.setHolidayLists(holidayListVos); entity.setHolidayLists(holidayListVos);
// StaffEntity cache = this.service.getCache(entity.getWorkNum()); // StaffEntity cache = this.service.getCache(entity.getWorkNum());
return super.infoAfter(id, model, entity, context); return super.infoAfter(id, model, entity, context);
} }
......
// This file is auto-generated, don't edit it. Thanks.
import com.aliyun.tea.*;
public class Sample {
/**
* 使用 Token 初始化账号Client
* @return Client
* @throws Exception
*/
public static com.aliyun.dingtalkoauth2_1_0.Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
config.protocol = "https";
config.regionId = "central";
return new com.aliyun.dingtalkoauth2_1_0.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.dingtalkoauth2_1_0.Client client = Sample.createClient();
com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest getAccessTokenRequest = new com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest();
try {
client.getAccessToken(getAccessTokenRequest);
} catch (TeaException err) {
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
// err 中含有 code 和 message 属性,可帮助开发定位问题
}
} catch (Exception _err) {
TeaException err = new TeaException(_err.getMessage(), _err);
if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
// err 中含有 code 和 message 属性,可帮助开发定位问题
}
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment