钉钉相关调整

This commit is contained in:
andy 2026-07-04 10:00:47 +08:00
parent 5f6fc4216b
commit ce60d0986f
15 changed files with 143 additions and 47 deletions

View File

@ -101,9 +101,11 @@ public class KQDeviceExchangeProcessor implements PunchTheClockStrategyExchangeP
//如果最后一条数据的卡类型为下班卡则返回上班卡和加班卡权限 or 检查当前人员是否存在特殊加班中 或者 检查当前人员部门是否开启加班 or 暂时取消这个判定 当天打过加班卡 ( || rzAttendanceDetailMapper.checkOverTimeCard(sysStaff.getUserId(), new Date()) > 0)
if(ObjectUtils.isNotEmpty(eqOverStaffMapper.selectEqOverStaffByUserId(sysStaff.getUserId())) || ObjectUtils.isEmpty(sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getDeptId, sysStaff.getDeptId()).eq(SysDept::getIsOverTime,"1")))){
//如果存在特殊加班, 或者当前部门没有开启加班 或者当天打过加班, 则无法打加班卡
return initMessage(0,"验证通过", "111000000");
// return initMessage(0,"验证通过", "111000000");
return initMessage(0,"验证通过", "000000000");
}
return initMessage(0,"验证通过", "111100000");
// return initMessage(0,"验证通过", "111100000");
return initMessage(0,"验证通过", "00100000");
}else{
return initMessage(0,"验证通过", "000011000");
}
@ -211,11 +213,13 @@ public class KQDeviceExchangeProcessor implements PunchTheClockStrategyExchangeP
}
public Boolean checkToDayCard(String userId, String rules, Date date){
return ObjectUtils.isNotEmpty(rzAttendanceDetailService.getOne(new LambdaQueryWrapper<RzAttendanceDetail>()
//原位getOne, 修正钉钉打打卡后 会出现多条记录, 所以改为list
return ObjectUtils.isNotEmpty(rzAttendanceDetailService.list(new LambdaQueryWrapper<RzAttendanceDetail>()
.like(RzAttendanceDetail::getButtonType,"%"+rules+"%")
.eq(RzAttendanceDetail::getStaffId, Long.valueOf(userId))
.eq(RzAttendanceDetail::getDelFlag, Constants.DELETE_FLAG_0)
.apply(" date_format(date_time,'%Y%m%d') = date_format({0},'%Y%m%d') ", date)));
.apply(" date_format(date_time,'%Y%m%d') = date_format({0},'%Y%m%d') ", date)
.orderByDesc(RzAttendanceDetail::getCreateTime)));
}

View File

@ -80,7 +80,7 @@ public class RzAttendanceDetailServiceImpl extends ServiceImpl<RzAttendanceDetai
//.apply( " DATE_FORMAT(date_time,'%Y%m%d') = DATE_FORMAT({0},'%Y%m%d')", date)
//以下为特殊规则, 只针对下班卡起作用
.orderByAsc("下班卡".equals(rules), RzAttendanceDetail::getDateTime)
.last("下班卡".equals(rules)," limit 1 ")
.last(" limit 1 ")
);
}

View File

@ -30,6 +30,9 @@ import com.evo.system.mapper.SysDeptMapper;
import com.evo.system.mapper.SysStaffMapper;
import com.evo.system.service.ISysStaffService;
import com.evo.wechat.service.SendClientService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
@ -146,6 +149,19 @@ public class RzAttendanceServiceImpl extends ServiceImpl<RzAttendanceMapper, RzA
*/
@Override
public int attendenceCount() {
// Map<String, String> addressMap = ParamUtils.checkKqAddressCount();
// Map<String, Integer> resultMap = Collections.emptyMap();
// ObjectMapper mapper = new ObjectMapper();
// addressMap.keySet().stream().forEach(key -> {
// try {
// Map<String, String> limitMap = mapper.readValue(addressMap.get(key), new TypeReference<Map<String, String>>() {});
// limitMap.get()
// resultMap.put(key, getBaseMapper().attendenceCount())
// } catch (JsonProcessingException e) {
// throw new RuntimeException(e);
// }
// });
List<RzAttendance> list = getBaseMapper().attendenceCount();
return list.size();
}

View File

@ -7,6 +7,9 @@ import com.evo.attendance.service.IRzSysParamService;
import com.evo.personnelMatters.domain.RzHoliday;
import com.evo.personnelMatters.service.IRzHolidayService;
import com.evo.system.service.ISysDictDataService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -198,7 +201,16 @@ public class ParamUtils {
* @return
*/
public static List<String> getTsDevSn(){
RzSysParam param= paramService.getRzSysParam("获取特殊类型的打卡机型号", "ts_device_sn","ET74336,ET74335","获取特殊类型的打卡机型号, 多个参数使用,隔开");
RzSysParam param= paramService.getRzSysParam("获取特殊类型的打卡机型号", "ts_device_sn","T71474,RT64815","获取特殊类型的打卡机型号, 多个参数使用,隔开");
return Collections.asList(param.getParamValue().split(","));
}
/***
* 获取餐厅设备信息
* @return
*/
public static List<String> getRestaurantDevSn(){
RzSysParam param= paramService.getRzSysParam("获取餐厅打卡机型号", "restaurant_device_sn","T71474,RT64815","获取餐厅打卡机型号, 多个参数使用,隔开");
return Collections.asList(param.getParamValue().split(","));
}
@ -217,6 +229,24 @@ public class ParamUtils {
if(StringUtils.isEmpty(rulesVal)) return false;
return Collections.asList(rulesVal.split(",")).contains(rules);
}
/***
* 检查各厂考勤人数
* sn 设备号
* rules 规则
* @return
*/
public static Map<String, String> checkKqAddressCount(){
try {
RzSysParam param= paramService.getRzSysParam("检查各厂考勤人数规则", "check_kq_address_count","{\"北厂\":\"{\"longScope\":\"123-456\",\"latScope\":\"123-456\"}\"}","特殊打卡机的打卡按钮规则, 使用json格式, 如果打卡机存在多个按钮规则用,分割");
String val = param.getParamValue();
ObjectMapper mapper = new ObjectMapper();
// 第一层外层 Map<String, String>
return mapper.readValue(param.getParamValue(), new TypeReference<Map<String, String>>() {});
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/***
* 获取特殊加班的考勤规则
* sn 设备号

View File

@ -1,5 +1,6 @@
package com.evo.ding.processor.callback.impl;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.dingtalk.api.response.OapiAttendanceGroupQueryResponse;
import com.dingtalk.api.response.OapiAttendanceShiftQueryResponse;
@ -45,6 +46,8 @@ public class DingCallBackGroupChangeExchangeProcessor implements DingCallBackExc
@Autowired
DingShiftGroupService dingShiftGroupService;
@Override
public boolean accept(String eventType) {
return EVENT_TYPE_ATTEND_GROUP_CHANGE.equals(eventType);
@ -79,7 +82,7 @@ public class DingCallBackGroupChangeExchangeProcessor implements DingCallBackExc
for (Long shiftId : groupDetail.getShiftIds()) {
String strShiftId = String.valueOf(shiftId);
if(map.containsKey(strShiftId)){
DingShift dingShift = dingShiftService.selectByDingId(strShiftId);
DingShift dingShift = dingShiftService.selectByDingIdEmptyCreate(strShiftId);
for (DingShiftGroup dingShiftGroup : map.get(strShiftId)){
dingShiftGroup.setCheckTime(("OnDuty".equals(dingShiftGroup.getType()) ? dingShift.getOnDutyCheckTime() : dingShift.getOffDutyCheckTime()));
dingShiftGroupService.updateById(dingShiftGroup);
@ -97,7 +100,7 @@ public class DingCallBackGroupChangeExchangeProcessor implements DingCallBackExc
}
}
public void crateDingShiftGroup(String groupId, String shiftId){
DingShift dingShift = dingShiftService.selectByDingId(shiftId);
DingShift dingShift = dingShiftService.selectByDingIdEmptyCreate(shiftId);
//直接更新上班, 下班
for (int i = 0; i < 2; i++) {
DingShiftGroup dingShiftGroup = new DingShiftGroup();

View File

@ -18,5 +18,7 @@ public interface DingShiftService extends IService<DingShift> {
public DingShift selectByDingId(String dingId);
public DingShift selectByDingIdEmptyCreate(String dingId);
public List<DingShift> selectList(DingShift dingShift);
}

View File

@ -1,12 +1,17 @@
package com.evo.ding.service.impl;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.evo.common.utils.Collections;
import com.evo.ding.domain.DingShift;
import com.evo.ding.domain.DingShiftGroup;
import com.evo.ding.mapper.DingShiftGroupMapper;
import com.evo.ding.mapper.DingShiftMapper;
import com.evo.ding.processor.callback.impl.DingCallBackShiftChangeExchangeProcessor;
import com.evo.ding.service.DingShiftGroupService;
import com.evo.ding.service.DingShiftService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.util.List;
@ -21,11 +26,24 @@ import java.util.List;
*/
@Service
public class DingShiftServiceImpl extends ServiceImpl<DingShiftMapper, DingShift> implements DingShiftService {
@Autowired
@Lazy
DingCallBackShiftChangeExchangeProcessor dingCallBackShiftChangeExchangeProcessor;
@Override
public DingShift selectByDingId(String dingId) {
return getBaseMapper().selectByDingId(dingId);
}
@Override
public DingShift selectByDingIdEmptyCreate(String dingId) {
DingShift dingShift = getBaseMapper().selectByDingId(dingId);
if(dingShift == null){
dingCallBackShiftChangeExchangeProcessor.exchange(JSONObject.from(Collections.asMap("id", dingId)));
return selectByDingId(dingId);
}
return dingShift;
}
@Override
public List<DingShift> selectList(DingShift dingShift) {
return getBaseMapper().selectList(dingShift);

View File

@ -2,6 +2,7 @@ package com.evo.equipment.service.impl;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.evo.common.utils.ParamUtils;
import com.evo.equipment.constant.Constants;
import com.evo.common.core.domain.AjaxResult;
import com.evo.common.utils.DateUtils;
@ -113,7 +114,7 @@ public class EqImagesServiceImpl implements IEqImagesService
//定义公共打卡机
List<String> dkj_list = new ArrayList<String>();
dkj_list.add(Constants.EQ_DEVICE_CODE); //食堂
dkj_list.addAll(ParamUtils.getRestaurantDevSn()); //食堂
// dkj_list.add(Constants.EQ_DEVICE_PUBLIC_CODE); //公共
dkj_list.add(eqImages.getTimeClock());
@ -265,7 +266,7 @@ public class EqImagesServiceImpl implements IEqImagesService
Row row = sheet.getRow(p);
if(StringUtils.isNotNull(row)){
dkj_list = new ArrayList<String>();
dkj_list.add(Constants.EQ_DEVICE_CODE); //食堂
dkj_list.addAll(ParamUtils.getRestaurantDevSn()); //食堂
// dkj_list.add(Constants.EQ_DEVICE_PUBLIC_CODE); //公共
dkj_list.add(row.getCell(4).getStringCellValue());
cau = new StaffDto();

View File

@ -46,7 +46,7 @@ import java.util.stream.Collectors;
* @date 2024-08-07
*/
@Service
public class EqSnDetailServiceImpl extends ServiceImpl<EqSnDetailMapper, EqSnDetail> implements IEqSnDetailService, ApplicationRunner
public class EqSnDetailServiceImpl extends ServiceImpl<EqSnDetailMapper, EqSnDetail> implements IEqSnDetailService
{
@Resource
private SysStaffMapper sysStaffMapper;
@ -118,8 +118,15 @@ public class EqSnDetailServiceImpl extends ServiceImpl<EqSnDetailMapper, EqSnDet
public EqSnDetail selectEqSnDetailBySn(String sn){
return getBaseMapper().selectEqSnDetailBySn(sn);
}
//com.evo.equipment.constant.Constants.EQ_DEVICE_PUBLIC_CODE,
static List<String> tsSn = Collections.asList(com.evo.equipment.constant.Constants.EQ_DEVICE_CODE);
//com.evo.equipment.constant.Constants.EQ_DEVICE_PUBLIC_CODE, Collections.asList(com.evo.equipment.constant.Constants.EQ_DEVICE_CODE)
static List<String> tsSn = Collections.emptyList();
public List<String> getTsSn(){
tsSn.clear();
tsSn.addAll(ParamUtils.getTsDevSn());
tsSn.addAll(ParamUtils.getRestaurantDevSn());
return tsSn;
}
private List<Map<String, String>> getPhoto(List<SysStaff> userList){
List<Map<String, String>> userPhotoList = Collections.emptyList();
@ -141,11 +148,12 @@ public class EqSnDetailServiceImpl extends ServiceImpl<EqSnDetailMapper, EqSnDet
public Map<String, List<Map<String, String>>> initTsDkDevice(String deviceSn){
Map<String, List<Map<String, String>>> snUserPhotoList = Collections.emptyMap();
//如果有且只有一个设备信息, 并且设备信息为公共打卡机, 或者是 食堂打卡机
if(tsSn.contains(deviceSn)) {
if(getTsSn().contains(deviceSn)) {
List<Map<String, String>> userPhotoList = Collections.emptyList();
List<SysStaff> userList = Collections.emptyList();
//deviceSn.equals(com.evo.equipment.constant.Constants.EQ_DEVICE_PUBLIC_CODE) ||
if (deviceSn.equals(com.evo.equipment.constant.Constants.EQ_DEVICE_CODE)) {
//deviceSn.equals(com.evo.equipment.constant.Constants.EQ_DEVICE_CODE)
if (ParamUtils.getRestaurantDevSn().contains(deviceSn)) {
//获取所有未删除的, 没有离职的员工信息
userList = sysStaffMapper.selectList(new LambdaQueryWrapper<SysStaff>().eq(SysStaff::getDelFlag, Constants.DELETE_FLAG_0).ne(SysStaff::getStatus, Constants.JOB_STATIS_11).select(SysStaff::getUserId, SysStaff::getDeptId, SysStaff::getName));
}
@ -154,8 +162,8 @@ public class EqSnDetailServiceImpl extends ServiceImpl<EqSnDetailMapper, EqSnDet
List<Long> userIds = eqOverStaffMapper.selectList(new LambdaQueryWrapper<EqOverStaff>().eq(EqOverStaff::getDelFlag, Constants.DELETE_FLAG_0).select(EqOverStaff::getUserId)).stream().map(EqOverStaff::getUserId).collect(Collectors.toList());
userList = sysStaffMapper.selectList((new LambdaQueryWrapper<SysStaff>().in(SysStaff::getUserId, userIds).eq(SysStaff::getDelFlag, Constants.DELETE_FLAG_0).ne(SysStaff::getStatus, Constants.JOB_STATIS_11).select(SysStaff::getUserId, SysStaff::getDeptId, SysStaff::getName)));
}
//如果是下发的食堂打卡机, 则需要查找餐饮人员的数据
if (deviceSn.equals(com.evo.equipment.constant.Constants.EQ_DEVICE_CODE)) {
//如果是下发的食堂打卡机, 则需要查找餐饮人员的数据 deviceSn.equals(com.evo.equipment.constant.Constants.EQ_DEVICE_CODE)deviceSn.equals(com.evo.equipment.constant.Constants.EQ_DEVICE_CODE)
if (ParamUtils.getRestaurantDevSn().contains(deviceSn)) {
List<RzRestaurantImages> list = rzRestaurantImagesMapper.selectList(new LambdaQueryWrapper<RzRestaurantImages>().eq(RzRestaurantImages::getDelFlag, Constants.DELETE_FLAG_0));
for (RzRestaurantImages img : list) {
userPhotoList.add(Collections.asMap("userId", String.valueOf(img.getId()), "name", img.getName(), "photoUrl", img.getImageUrl(), "deptName", "实习生"));
@ -204,14 +212,14 @@ public class EqSnDetailServiceImpl extends ServiceImpl<EqSnDetailMapper, EqSnDet
Map<String, List<Map<String, String>>> snUserPhotoList = Collections.emptyMap();
if(Collections.isEmpty(userPhotoList)){
//如果有且只有一个设备信息, 并且设备信息为公共打卡机, 或者是 食堂打卡机
if(snList.size() ==1 && tsSn.contains(snList.get(0))){
if(snList.size() ==1 && getTsSn().contains(snList.get(0))){
snUserPhotoList.putAll(initTsDkDevice(snList.get(0)));
}else{
List<String> allSnList = new ArrayList<String>(){{addAll(snList);}};
List<String> tsDeviceSn = Collections.findDuplicatesList(allSnList, tsSn);
List<String> tsDeviceSn = Collections.findDuplicatesList(allSnList, getTsSn());
//所有所有不是特殊打卡机人员信息
snList.remove(tsDeviceSn);
snList.stream().filter(sn-> !tsSn.contains(sn)).forEach(sn ->{
snList.stream().filter(sn-> !getTsSn().contains(sn)).forEach(sn ->{
//获取所有未删除的, 没有离职的员工信息
List<SysStaff> userList = sysStaffMapper.selectList((new LambdaQueryWrapper<SysStaff>().like(SysStaff::getTimeClock, sn).eq(SysStaff::getDelFlag, Constants.DELETE_FLAG_0).ne(SysStaff::getStatus,Constants.JOB_STATIS_11).select(SysStaff::getUserId, SysStaff::getDeptId, SysStaff::getName)));
snUserPhotoList.put(sn, getPhoto(userList));
@ -304,8 +312,10 @@ public class EqSnDetailServiceImpl extends ServiceImpl<EqSnDetailMapper, EqSnDet
update(new UpdateWrapper<EqSnDetail>().set("type","连接已断开").set("session_id","").eq( "session_id", sessionId));
}
@Override
public void run(ApplicationArguments args) throws Exception {
tsSn.addAll(ParamUtils.getTsDevSn());
}
//
// @Override
// public void run(ApplicationArguments args) throws Exception {
// tsSn.addAll(ParamUtils.getTsDevSn());
// tsSn.addAll(ParamUtils.getRestaurantDevSn());
// }
}

View File

@ -54,6 +54,8 @@ public class RzRestaurantDetail extends BaseEntity
/** 删除标记 */
private String delFlag;
private String deviceSn;
@Override
public String toString() {

View File

@ -83,7 +83,6 @@ public class RzRestaurantDetailServiceImpl extends ServiceImpl<RzRestaurantDetai
@Override
public String insertRzRestaurantDetail(String json)
{
System.out.println(json.toString());
//需要返回的对象
RestaurantVo cfiv = new RestaurantVo();
RestaurantData cfd = new RestaurantData();
@ -98,7 +97,6 @@ public class RzRestaurantDetailServiceImpl extends ServiceImpl<RzRestaurantDetai
if(!ParamUtils.getCanteenOpenHour().contains(hour)){
cfiv.setResult(2);
cfiv.setMsg("不在打卡时间内");
System.out.println(JSONObject.toJSONString(cfiv));
return JSONObject.toJSONString(cfiv);
}
@ -132,6 +130,7 @@ public class RzRestaurantDetailServiceImpl extends ServiceImpl<RzRestaurantDetai
RzRestaurantStatistics restaurantStatistics = rzRestaurantStatisticsMapper.selectRzRestaurantStatisticsByUserIdAndDate(Long.valueOf(userId),new Date());
//增加打卡记录
RzRestaurantDetail cyFaceInfo = new RzRestaurantDetail();
cyFaceInfo.setDeviceSn(jsonObject.getString("sn"));
cyFaceInfo.setDate(new Date());
cyFaceInfo.setStaffId(restaurantStatistics.getStaffId());
cyFaceInfo.setName(restaurantStatistics.getName());

View File

@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.evo.common.constant.Constants;
import com.evo.common.core.domain.AjaxResult;
import com.evo.common.core.domain.entity.RzUpload;
import com.evo.common.utils.Collections;
import com.evo.common.utils.DateUtils;
import com.evo.common.utils.SecurityUtils;
import com.evo.common.utils.StringUtils;
import com.evo.common.utils.*;
import com.evo.common.utils.file.FileUploadUtils;
import com.evo.equipment.domain.vo.StaffData;
import com.evo.equipment.domain.vo.StaffDto;
@ -22,6 +19,7 @@ import com.evo.restaurant.service.IRzRestaurantImagesService;
import com.evo.restaurant.service.IRzRestaurantStatisticsService;
import com.evo.system.service.RzUploadService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
@ -45,6 +43,9 @@ public class RzRestaurantImagesServiceImpl extends ServiceImpl<RzRestaurantImage
private IEqSnDetailService eqSnDetailService;//餐饮统计
@Resource
private RzUploadService rzUploadService;//文件上传
@Autowired
private ParamUtils paramUtils;
/**
* 查询餐饮照片管理列表
*
@ -68,8 +69,7 @@ public class RzRestaurantImagesServiceImpl extends ServiceImpl<RzRestaurantImage
{
//根据id查询信息
RzRestaurantImages rzRestaurantImages = getBaseMapper().selectRzRestaurantImagesById(id);
//删除打卡机照片
String message = "";
//需要返回的对象
StaffDto cau = new StaffDto();
//发送的数据
@ -78,8 +78,6 @@ public class RzRestaurantImagesServiceImpl extends ServiceImpl<RzRestaurantImage
cau.setCmd("to_device");
//无用值空串
cau.setForm("");
//设备号
cau.setTo(com.evo.equipment.constant.Constants.EQ_DEVICE_CODE);
//给服务端预留的补充字段设备端不处理这个字段内容设备在响应这条指令时原样返回
cau.setExtra("");
//发送的数据
@ -88,7 +86,12 @@ public class RzRestaurantImagesServiceImpl extends ServiceImpl<RzRestaurantImage
caud.setUser_id(id+"");
cau.setData(caud);
//调用websocket推送给设备
WebSocketUsers.sendMessageToUsersByText(JSONObject.toJSONString(cau));
ParamUtils.getRestaurantDevSn().stream().forEach(deviceNo ->{
//设备号 com.evo.equipment.constant.Constants.EQ_DEVICE_CODE
cau.setTo(deviceNo);
WebSocketUsers.sendMessageToUsersByText(JSONObject.toJSONString(cau));
});
//删除照片
String img_name = rzRestaurantImages.getImageUrl().substring(rzRestaurantImages.getImageUrl().lastIndexOf("/")+1);
File file = new File(com.evo.equipment.constant.Constants.STAFF_IMAGE_ADDRESS + img_name);
@ -134,7 +137,7 @@ public class RzRestaurantImagesServiceImpl extends ServiceImpl<RzRestaurantImage
log.error("处理上传照片信息出现错误", e);
}
//下发照片
eqSnDetailService.sendPhoto(Collections.asList(com.evo.equipment.constant.Constants.EQ_DEVICE_CODE),
eqSnDetailService.sendPhoto(Collections.asList(ParamUtils.getRestaurantDevSn()),
Collections.asList(Collections.asMap("userId", String.valueOf(rzRestaurantImages.getId()),
"name", rzRestaurantImages.getName(), "photoUrl", rzRestaurantImages.getImageUrl())));
}

View File

@ -166,12 +166,12 @@ public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaff> i
if(CollectionUtils.isNotEmpty(sysStaff.getTimeClockList())){
sysStaff.setTimeClock(sysStaff.getTimeClockList().stream().collect(Collectors.joining(",")));
}
//新增员工信息到金蝶
if(StringUtils.isNotEmpty(sysStaff.getJobCode())){
sysStaff.setExtended(KingdeeRequestUtils.employeeSave(Collections.asMap("userName", sysStaff.getName(), "userCode", sysStaff.getCode(), "jobCode", sysStaff.getJobCode().split("_")[0],"deptCode", sysStaff.getJobCode().split("_")[1])));
}else if(StringUtils.isEmpty(sysStaff.getJobCode())){
sysStaff.setExtended(KingdeeRequestUtils.employeeSaveEmptyJob(Collections.asMap("userName", sysStaff.getName(), "userCode", sysStaff.getCode())));
}
// //新增员工信息到金蝶
// if(StringUtils.isNotEmpty(sysStaff.getJobCode())){
// sysStaff.setExtended(KingdeeRequestUtils.employeeSave(Collections.asMap("userName", sysStaff.getName(), "userCode", sysStaff.getCode(), "jobCode", sysStaff.getJobCode().split("_")[0],"deptCode", sysStaff.getJobCode().split("_")[1])));
// }else if(StringUtils.isEmpty(sysStaff.getJobCode())){
// sysStaff.setExtended(KingdeeRequestUtils.employeeSaveEmptyJob(Collections.asMap("userName", sysStaff.getName(), "userCode", sysStaff.getCode())));
// }
int i = getBaseMapper().insertSysStaff(sysStaff);
if(i < 1){
@ -281,13 +281,19 @@ public class SysStaffServiceImpl extends ServiceImpl<SysStaffMapper, SysStaff> i
//不为空, 准备下发
if(upload != null){
List<String> dkj_list = new ArrayList<String>();
dkj_list.add(com.evo.equipment.constant.Constants.EQ_DEVICE_CODE); //食堂
dkj_list.addAll(ParamUtils.getRestaurantDevSn()); //食堂
// dkj_list.add(com.evo.equipment.constant.Constants.EQ_DEVICE_PUBLIC_CODE); //公共
dkj_list.addAll(sysStaff.getTimeClockList());
if(Collections.isNotEmpty(sysStaff.getTimeClockList())){
dkj_list.addAll(sysStaff.getTimeClockList());
}
// dkj_list.add(sysStaff.getTimeClockList().get(1));
//下发照片
SysDept sysDept = deptMapper.selectDeptById(sysStaff.getDeptId());
eqSnDetailService.sendPhoto(dkj_list, Collections.asList(Collections.asMap("userId", String.valueOf(sysStaff.getUserId()), "name", sysStaff.getName(), "photoUrl", ParamUtils.getGlobalStaticUrl()+upload.getFileName(), "deptName", sysDept.getDeptName())));
try {
eqSnDetailService.sendPhoto(dkj_list, Collections.asList(Collections.asMap("userId", String.valueOf(sysStaff.getUserId()), "name", sysStaff.getName(), "photoUrl", ParamUtils.getGlobalStaticUrl()+upload.getFileName(), "deptName", sysDept.getDeptName())));
} catch (Exception e) {
throw new RuntimeException("员工新增成功, 但是照片下发失败了,请截图联系管理员: 直白原因: "+ e.getMessage());
}
}
}

View File

@ -32,7 +32,7 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://localhost:3306/evo_cw_dev_ding?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
url: jdbc:mysql://localhost:3306/evo_cw_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: hbyt123456
#username: root

View File

@ -20,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectRzRestaurantDetailVo">
select id, staff_id,name, date, time, sign, del_flag, create_by, create_time, update_by, update_time from rz_restaurant_detail
select id, staff_id,name, date, time, sign, del_flag, device_sn, create_by, create_time, update_by, update_time from rz_restaurant_detail
</sql>
<select id="selectRzRestaurantDetailList" parameterType="RzRestaurantDetail" resultMap="RzRestaurantDetailResult">
@ -57,6 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="time != null">time,</if>
<if test="sign != null">sign,</if>
<if test="delFlag != null">del_flag,</if>
<if test="deviceSn != null">device_sn,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
@ -69,6 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="time != null">#{time},</if>
<if test="sign != null">#{sign},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="deviceSn != null">#{deviceSn},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>