128 lines
5.4 KiB
Java
128 lines
5.4 KiB
Java
package com.zhgd.xmgl.async;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.zhgd.xmgl.modules.basicdata.entity.AttendanceDev;
|
|
import com.zhgd.xmgl.modules.basicdata.entity.AttendanceDevSync;
|
|
import com.zhgd.xmgl.modules.basicdata.entity.SystemDictData;
|
|
import com.zhgd.xmgl.modules.basicdata.entity.WorkerInfo;
|
|
import com.zhgd.xmgl.modules.basicdata.mapper.AttendanceDevMapper;
|
|
import com.zhgd.xmgl.modules.basicdata.service.IAttendanceDevSyncService;
|
|
import com.zhgd.xmgl.modules.basicdata.service.ISystemDictDataService;
|
|
import com.zhgd.xmgl.util.HttpUtil;
|
|
import com.zhgd.xmgl.util.ParamEnum;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
/**
|
|
* @description: 考勤相关信息异步任务
|
|
**/
|
|
@Slf4j
|
|
@Component
|
|
public class AsyncAttendance {
|
|
|
|
@Autowired
|
|
private IAttendanceDevSyncService attendanceDevSyncService;
|
|
|
|
@Autowired
|
|
private AttendanceDevMapper attendanceDevMapper;
|
|
|
|
@Autowired
|
|
private ISystemDictDataService systemDictDataService;
|
|
|
|
/**
|
|
* 同步考勤设备信息
|
|
* @param type
|
|
* @param attendanceDev
|
|
*/
|
|
@Async("countAttendanceExecutor")
|
|
public void syncAttendanceDev(Integer type, AttendanceDev attendanceDev) {
|
|
String requestUrl = buildRequestUrl(type, attendanceDev.getProduceId());
|
|
if (requestUrl == null) {
|
|
return;
|
|
}
|
|
try {
|
|
JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(attendanceDev));
|
|
// 推送同步信息
|
|
String result = HttpUtil.doPost(requestUrl, jsonObject.toString());
|
|
int state = StringUtils.isBlank(result) ? 0 : 1;
|
|
// 记录推送信息
|
|
AttendanceDevSync attendanceDevSync = new AttendanceDevSync();
|
|
attendanceDevSync.setMainId(attendanceDev.getCode());
|
|
attendanceDevSync.setRequestUrl(requestUrl);
|
|
attendanceDevSync.setContent(jsonObject.toString());
|
|
attendanceDevSync.setState(state);
|
|
attendanceDevSync.setType(1);
|
|
attendanceDevSync.setCreateTime(new Date());
|
|
attendanceDevSyncService.save(attendanceDevSync);
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
log.error("推送考勤设备数据出现异常,请求路径:" + requestUrl + ",设备ID:" + attendanceDev.getId());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 同步考勤人员信息
|
|
* @param workerInfo
|
|
*/
|
|
@Async("countAttendanceExecutor")
|
|
public void syncAttendanceWorker(Integer type, WorkerInfo workerInfo) {
|
|
try {
|
|
// 查询人员项目/工程对应的设备厂商信息
|
|
List<Integer> productIdList = attendanceDevMapper.getProductList(workerInfo, "ignoreDataScope");
|
|
List<AttendanceDev> attendanceDevList = attendanceDevMapper.getList(workerInfo, "ignoreDataScope");
|
|
for (Integer productId : productIdList) {
|
|
String requestUrl = buildRequestUrl(type, productId);
|
|
if (requestUrl == null) {
|
|
continue;
|
|
}
|
|
JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(workerInfo));
|
|
jsonObject.put("attendDevList", JSONArray.parseArray(JSON.toJSONString(
|
|
attendanceDevList.stream().filter(a -> a.getProduceId().equals(productId)).collect(Collectors.toList()))));
|
|
// 推送同步信息
|
|
String result = HttpUtil.doPost(requestUrl, jsonObject.toString());
|
|
int state = StringUtils.isBlank(result) ? 0 : 1;
|
|
// 记录推送信息
|
|
AttendanceDevSync attendanceDevSync = new AttendanceDevSync();
|
|
attendanceDevSync.setMainId(workerInfo.getId().toString());
|
|
attendanceDevSync.setRequestUrl(requestUrl);
|
|
attendanceDevSync.setContent(jsonObject.toString());
|
|
attendanceDevSync.setState(state);
|
|
attendanceDevSync.setType(2);
|
|
attendanceDevSync.setCreateTime(new Date());
|
|
attendanceDevSyncService.save(attendanceDevSync);
|
|
}
|
|
}catch (Exception e){
|
|
e.printStackTrace();
|
|
log.error("推送考勤人员数据出现异常");
|
|
}
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param type 请求类型
|
|
* @param productId 厂商ID
|
|
* @return
|
|
*/
|
|
private String buildRequestUrl(Integer type, Integer productId) {
|
|
SystemDictData prefix = systemDictDataService.getOne(Wrappers.<SystemDictData>lambdaQuery()
|
|
.eq(SystemDictData::getDictLabel, productId).eq(SystemDictData::getDictType, ParamEnum.SysDictType.ATTEND_DEV_PRODUCE.getValue()));
|
|
SystemDictData suffix = systemDictDataService.getOne(Wrappers.<SystemDictData>lambdaQuery()
|
|
.eq(SystemDictData::getDictLabel, type).eq(SystemDictData::getDictType, ParamEnum.SysDictType.ATTEND_SYNC_API.getValue()));
|
|
if (prefix == null || suffix == null || prefix.getStatus() != 1 || suffix.getStatus() != 1) {
|
|
return null;
|
|
} else {
|
|
return prefix.getRemark() + suffix.getRemark();
|
|
}
|
|
}
|
|
}
|