357 lines
16 KiB
Java
357 lines
16 KiB
Java
package com.zhgd.xmgl.call;
|
||
|
||
import cn.hutool.core.collection.CollUtil;
|
||
import cn.hutool.core.convert.Convert;
|
||
import cn.hutool.core.date.DateTime;
|
||
import cn.hutool.core.date.DateUtil;
|
||
import cn.hutool.core.util.StrUtil;
|
||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||
import com.google.common.collect.Lists;
|
||
import com.zhgd.jeecg.common.mybatis.EntityMap;
|
||
import com.zhgd.xmgl.call.util.jc.AESUtil;
|
||
import com.zhgd.xmgl.call.util.jc.JcHttpUtil;
|
||
import com.zhgd.xmgl.modules.electrical.entity.ElectricalData;
|
||
import com.zhgd.xmgl.modules.electrical.entity.ElectricalDev;
|
||
import com.zhgd.xmgl.modules.environment.entity.DustNoiseData;
|
||
import com.zhgd.xmgl.modules.environment.entity.EnvironmentDev;
|
||
import com.zhgd.xmgl.modules.environment.service.IDustNoiseDataService;
|
||
import com.zhgd.xmgl.modules.environment.service.IEnvironmentDevService;
|
||
import com.zhgd.xmgl.modules.worker.entity.*;
|
||
import com.zhgd.xmgl.modules.worker.service.ITeamInfoService;
|
||
import com.zhgd.xmgl.modules.worker.service.IUfaceDevService;
|
||
import com.zhgd.xmgl.modules.worker.service.IWorkerCertificateService;
|
||
import com.zhgd.xmgl.modules.worker.service.IWorkerTypeService;
|
||
import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseInfoServiceImpl;
|
||
import com.zhgd.xmgl.util.*;
|
||
import lombok.extern.slf4j.Slf4j;
|
||
import net.javacrumbs.shedlock.core.SchedulerLock;
|
||
import org.apache.commons.lang3.StringUtils;
|
||
import org.springframework.beans.factory.annotation.Autowired;
|
||
import org.springframework.context.annotation.Lazy;
|
||
import org.springframework.scheduling.annotation.Async;
|
||
import org.springframework.scheduling.annotation.Scheduled;
|
||
import org.springframework.stereotype.Component;
|
||
import org.springframework.web.bind.annotation.RequestMapping;
|
||
import org.springframework.web.bind.annotation.RestController;
|
||
|
||
import javax.annotation.Resource;
|
||
import java.util.*;
|
||
import java.util.stream.Collectors;
|
||
|
||
/**
|
||
* 转发机场
|
||
*/
|
||
@Slf4j
|
||
@Component
|
||
@RestController
|
||
@RequestMapping("/xmgl/task")
|
||
public class JcCall {
|
||
@Lazy
|
||
@Autowired
|
||
private EnterpriseInfoServiceImpl enterpriseInfoService;
|
||
@Lazy
|
||
@Autowired
|
||
private ITeamInfoService teamInfoService;
|
||
@Lazy
|
||
@Autowired
|
||
private IWorkerTypeService workerTypeService;
|
||
@Lazy
|
||
@Autowired
|
||
private IWorkerCertificateService workerCertificateService;
|
||
@Lazy
|
||
@Resource
|
||
private IUfaceDevService ufaceDevService;
|
||
@Lazy
|
||
@Autowired
|
||
private IEnvironmentDevService environmentDevService;
|
||
@Lazy
|
||
@Autowired
|
||
private IDustNoiseDataService dustNoiseDataService;
|
||
@Lazy
|
||
@Autowired
|
||
private EnvironmentUtil environmentUtil;
|
||
|
||
/**
|
||
* 保存劳务人员
|
||
*
|
||
* @param workerInfo
|
||
*/
|
||
public void sendSaveWorkerInfoByJc(WorkerInfo workerInfo) {
|
||
if (!JcHttpUtil.isJcProject(workerInfo.getProjectSn())) {
|
||
return;
|
||
}
|
||
if (StrUtil.isBlank(workerInfo.getIdCard())) {
|
||
return;
|
||
}
|
||
try {
|
||
JcHttpUtil.jcPushWorker(getUserSyncRequest(workerInfo, JcHttpUtil.UserSyncRequest.SyncTypeEnum.ADD));
|
||
} catch (Exception e) {
|
||
log.error("", e);
|
||
}
|
||
}
|
||
|
||
private JcHttpUtil.UserSyncRequest getUserSyncRequest(WorkerInfo workerInfo, String opt) throws Exception {
|
||
JcHttpUtil.UserSyncRequest userSyncRequest = new JcHttpUtil.UserSyncRequest();
|
||
userSyncRequest.setProjectId(JcHttpUtil.getJcProjectId());
|
||
userSyncRequest.setType(opt);
|
||
JcHttpUtil.UserSyncRequest.UserForm form = new JcHttpUtil.UserSyncRequest.UserForm();
|
||
form.setEmpCenterId(Convert.toStr(workerInfo.getId()));
|
||
form.setIdcardGrantOrg(workerInfo.getIssuingAuthorityForIdcard());
|
||
form.setEmpName(workerInfo.getWorkerName());
|
||
Map<String, String> birthdayAgeSexMap = IdCardUtils.getBirthdayAgeSex(workerInfo.getIdCard());
|
||
form.setAge(Convert.toInt(birthdayAgeSexMap.get("age")));
|
||
form.setGender(workerInfo.getSex());
|
||
if (StrUtil.isNotBlank(workerInfo.getPhoneNumber())) {
|
||
form.setPhone(AESUtil.Encrypt(workerInfo.getPhoneNumber(), AESUtil.SECRET));
|
||
}
|
||
if (StrUtil.isNotBlank(workerInfo.getIdCardUpPhotoUrl())) {
|
||
form.setHeadImg(JcHttpUtil.replaceUrlToHttps(FileUtils.getOnlineUrl(workerInfo.getIdCardUpPhotoUrl())));
|
||
}
|
||
form.setNation(workerInfo.getNation());
|
||
form.setIdcardType(1);
|
||
form.setIdcardNo(AESUtil.Encrypt(workerInfo.getIdCard(), AESUtil.SECRET));
|
||
form.setCorpCenterId(Convert.toStr(workerInfo.getEnterpriseId()));
|
||
Optional.ofNullable(enterpriseInfoService.getById(workerInfo.getEnterpriseId())).ifPresent(enterpriseInfo -> {
|
||
form.setCorpName(enterpriseInfo.getEnterpriseName());
|
||
});
|
||
form.setWorkerType(getWorkerType(workerInfo.getPersonType()));
|
||
form.setWorkType(getWorkType(workerInfo));
|
||
form.setLeaderFlag(getLeaderFlag(workerInfo));
|
||
form.setPostState(workerInfo.getInserviceType());
|
||
if (StrUtil.isNotBlank(workerInfo.getEnterDate())) {
|
||
form.setEnterTime(DateUtil.formatDateTime(DateUtil.parseDate(workerInfo.getEnterDate())));
|
||
}
|
||
// form.setUserType("");
|
||
form.setCreateDate(DateUtil.formatDateTime(workerInfo.getAddTime()));
|
||
form.setUpdateDate(DateUtil.formatDateTime(workerInfo.getUpdateTime()));
|
||
form.setDeleteFlag(0);
|
||
form.setNeedEscape("0");
|
||
form.setCertificates(getCertificates(workerInfo));
|
||
userSyncRequest.setSmartUserFormList(Collections.singletonList(form));
|
||
return userSyncRequest;
|
||
}
|
||
|
||
private List<JcHttpUtil.UserSyncRequest.CertificateInfo> getCertificates(WorkerInfo workerInfo) {
|
||
List<EntityMap> certificateList = workerCertificateService.selectWorkerCertificateList(new MapBuilder<String, Object>()
|
||
.put("workerId", workerInfo.getId())
|
||
.build());
|
||
return certificateList.stream().filter(o -> CertUtil.isSpecial(o.get("certificateTypeName"))).map(o -> {
|
||
JcHttpUtil.UserSyncRequest.CertificateInfo certificateInfo = new JcHttpUtil.UserSyncRequest.CertificateInfo();
|
||
if (StrUtil.isNotBlank(o.get("photoUrl"))) {
|
||
try {
|
||
certificateInfo.setCertificate(JcHttpUtil.replaceUrlToHttps(FileUtils.getOnlineUrl(o.get("photoUrl"))));
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
}
|
||
certificateInfo.setValidStartTime(o.get("issueTime"));
|
||
certificateInfo.setValidEndTime(o.get("effectTime"));
|
||
return certificateInfo;
|
||
}).collect(Collectors.toList());
|
||
}
|
||
|
||
private Boolean getLeaderFlag(WorkerInfo workerInfo) {
|
||
//人员类型 1、劳务人员 2、管理人员,3临时人员
|
||
if (Objects.equals(workerInfo.getPersonType(), 1)) {
|
||
TeamInfo teamInfo = teamInfoService.getById(workerInfo.getTeamId());
|
||
if (teamInfo != null && Objects.equals(workerInfo.getIdCard(), teamInfo.getLeaderIdCard())) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
private String getWorkType(WorkerInfo workerInfo) {
|
||
Integer personType = workerInfo.getPersonType();
|
||
//人员类型 1、劳务人员 2、管理人员,3临时人员
|
||
if (Objects.equals(personType, 1)) {
|
||
TeamInfo teamInfo = teamInfoService.getById(workerInfo.getTeamId());
|
||
if (teamInfo != null) {
|
||
WorkerType workerType = workerTypeService.getById(teamInfo.getWorkerTypeId());
|
||
JcHttpUtil.UserSyncRequest.WorkTypeEnum typeEnum = JcHttpUtil.UserSyncRequest.WorkTypeEnum.getByNameOrDefault(workerType.getTypeName());
|
||
return typeEnum.getCode();
|
||
}
|
||
} else if (Objects.equals(personType, 2)) {
|
||
if (Objects.equals(workerInfo.getJobType(), "1")) {
|
||
return JcHttpUtil.UserSyncRequest.WorkTypeEnum.PROJECT_MANAGER.getCode();
|
||
} else {
|
||
return JcHttpUtil.UserSyncRequest.WorkTypeEnum.MANAGEMENT_PERSONNEL.getCode();
|
||
}
|
||
}
|
||
return JcHttpUtil.UserSyncRequest.WorkTypeEnum.getDefaultCode();
|
||
}
|
||
|
||
private String getWorkerType(Integer personType) {
|
||
//人员类型 1、劳务人员 2、管理人员,3临时人员
|
||
//1:管理人员 2:建筑工人 3:其他
|
||
if (Objects.equals(personType, 1)) {
|
||
return "2";
|
||
} else if (Objects.equals(personType, 2)) {
|
||
return "1";
|
||
} else {
|
||
return "3";
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 删除劳务人员
|
||
*
|
||
* @param workerInfo
|
||
*/
|
||
public void sendDeleteWorkerInfoByJc(WorkerInfo workerInfo) {
|
||
if (!JcHttpUtil.isJcProject(workerInfo.getProjectSn())) {
|
||
return;
|
||
}
|
||
if (StrUtil.isBlank(workerInfo.getIdCard())) {
|
||
return;
|
||
}
|
||
try {
|
||
JcHttpUtil.jcPushWorker(getUserSyncRequest(workerInfo, JcHttpUtil.UserSyncRequest.SyncTypeEnum.DELETE));
|
||
} catch (Exception e) {
|
||
log.error("", e);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 发送考勤
|
||
*
|
||
* @param workerInfo
|
||
* @param workerAttendance
|
||
*/
|
||
public void sendAddWorkerPassRecord(WorkerInfo workerInfo, WorkerAttendance workerAttendance) {
|
||
if (!JcHttpUtil.isJcProject(workerInfo.getProjectSn())) {
|
||
return;
|
||
}
|
||
try {
|
||
JcHttpUtil.jcPushWorkerPassRecord(getWorkerPassRecord(workerInfo, workerAttendance));
|
||
} catch (Exception e) {
|
||
log.error("", e);
|
||
}
|
||
}
|
||
|
||
private JcHttpUtil.UserRecordSyncRequest getWorkerPassRecord(WorkerInfo workerInfo, WorkerAttendance workerAttendance) throws Exception {
|
||
JcHttpUtil.UserRecordSyncRequest userRecordSyncRequest = new JcHttpUtil.UserRecordSyncRequest();
|
||
userRecordSyncRequest.setProjectId(JcHttpUtil.getJcProjectId());
|
||
JcHttpUtil.UserRecordSyncRequest.UserRecordForm form = new JcHttpUtil.UserRecordSyncRequest.UserRecordForm();
|
||
form.setRecordId(Convert.toStr(workerAttendance.getId()));
|
||
form.setEmpCenterId(Convert.toStr(workerInfo.getId()));
|
||
form.setEmpName(workerInfo.getWorkerName());
|
||
form.setDeviceKey(workerAttendance.getDevSn());
|
||
UfaceDev ufaceDev = ufaceDevService.getOne(new LambdaQueryWrapper<UfaceDev>()
|
||
.eq(UfaceDev::getDevSn, workerAttendance.getDevSn()));
|
||
if (ufaceDev != null) {
|
||
form.setDeviceName(ufaceDev.getDevName());
|
||
}
|
||
form.setDirection(Objects.equals(workerAttendance.getPassType(), 2) ? 0 : 1);
|
||
form.setPhotoUrl(JcHttpUtil.replaceUrlToHttps(FileUtils.getOnlineUrl(workerAttendance.getImageUrl())));
|
||
form.setShowTime(workerAttendance.getCreateTime());
|
||
form.setIdcardNo(AESUtil.Encrypt(workerInfo.getIdCard(), AESUtil.SECRET));
|
||
form.setCreateDate(DateUtil.now());
|
||
form.setUpdateDate(form.getCreateDate());
|
||
form.setDeleteFlag(0);
|
||
form.setNeedEscape("0");
|
||
userRecordSyncRequest.setSmartUserRecordFormList(Collections.singletonList(form));
|
||
return userRecordSyncRequest;
|
||
}
|
||
|
||
/**
|
||
* 机场项目推送扬尘
|
||
*/
|
||
@SchedulerLock(name = "jcPushDustData", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 3)
|
||
@Scheduled(cron = "0 0 */1 * * ?")
|
||
@RequestMapping("jcPushDustData")
|
||
public void jcPushDustData() {
|
||
if (!JcHttpUtil.isJc()) {
|
||
return;
|
||
}
|
||
List<EnvironmentDev> devs;
|
||
if (JcHttpUtil.isJcAll()) {
|
||
devs = environmentDevService.list(null);
|
||
} else {
|
||
devs = environmentDevService.list(new LambdaQueryWrapper<EnvironmentDev>()
|
||
.eq(EnvironmentDev::getProjectSn, JcHttpUtil.JC_PROJECTSN));
|
||
}
|
||
Date now = new Date();
|
||
DateTime offsetHour = DateUtil.offsetHour(now, -1);
|
||
ArrayList<JcHttpUtil.DustDataSyncRequest.DataForm> dustDataFormLists = Lists.newArrayList();
|
||
for (EnvironmentDev dev : devs) {
|
||
DustNoiseData data = dustNoiseDataService.getOne(new LambdaQueryWrapper<DustNoiseData>()
|
||
.eq(DustNoiseData::getDeviceId, dev.getDeviceId())
|
||
.ge(DustNoiseData::getUploadDate, DateUtil.formatDateTime(offsetHour))
|
||
.le(DustNoiseData::getUploadDate, DateUtil.formatDateTime(now))
|
||
.orderByDesc(DustNoiseData::getUploadDate).last("limit 1"));
|
||
if (data != null) {
|
||
JcHttpUtil.DustDataSyncRequest.DataForm e = new JcHttpUtil.DustDataSyncRequest.DataForm();
|
||
e.setDustName(dev.getDeviceName());
|
||
e.setDeviceSn(data.getDeviceId());
|
||
e.setAccTime(data.getUploadDate());
|
||
e.setPm25(Convert.toStr(data.getPm25()));
|
||
e.setPm10(Convert.toStr(data.getPm10()));
|
||
e.setNoise(Convert.toStr(data.getNoise()));
|
||
e.setEnvTemp(Convert.toStr(data.getTemperature()));
|
||
e.setEnvRh(Convert.toStr(data.getHumidity()));
|
||
if (StringUtils.isNotEmpty(data.getWinddirection())) {
|
||
e.setWindDirection(JcHttpUtil.getWindDirection(WindDirectionUtils.getWindDirectionName(data.getWinddirection())));
|
||
}
|
||
e.setWindSpeed(Convert.toStr(data.getWindspeed()));
|
||
e.setPushTime(data.getUploadDate());
|
||
e.setState("1");
|
||
dustDataFormLists.add(e);
|
||
}
|
||
}
|
||
if (CollUtil.isNotEmpty(dustDataFormLists)) {
|
||
JcHttpUtil.DustDataSyncRequest e = new JcHttpUtil.DustDataSyncRequest();
|
||
e.setProjectId(JcHttpUtil.getJcProjectId());
|
||
for (JcHttpUtil.DustDataSyncRequest.DataForm dustDataForm : dustDataFormLists) {
|
||
dustDataForm.setProjectId(e.getProjectId());
|
||
}
|
||
e.setSmartDustDataFormList(dustDataFormLists);
|
||
JcHttpUtil.jcPushDustData(e);
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 机场项目转发电箱数据
|
||
*
|
||
* @param electricalData
|
||
* @param electricalDev
|
||
* @param jcAlarmStatus
|
||
*/
|
||
@Async("electricalExecutor")
|
||
public void sendAddElectricalData(ElectricalData electricalData, ElectricalDev electricalDev, Integer jcAlarmStatus) {
|
||
if (!JcHttpUtil.isJcProject(electricalData.getProjectSn())) {
|
||
return;
|
||
}
|
||
if (Objects.equals(Convert.toDouble(electricalData.getPhaseCurrentA()), 0D)
|
||
|| Objects.equals(Convert.toDouble(electricalData.getPhaseCurrentB()), 0D)
|
||
|| Objects.equals(Convert.toDouble(electricalData.getPhaseCurrentC()), 0D)) {
|
||
jcAlarmStatus = 4;
|
||
}
|
||
JcHttpUtil.PowerDeviceDataSyncRequest request = getPowerDeviceDataSyncRequest(electricalData, electricalDev, jcAlarmStatus);
|
||
JcHttpUtil.jcPushElectricalData(Collections.singletonList(request));
|
||
}
|
||
|
||
private JcHttpUtil.PowerDeviceDataSyncRequest getPowerDeviceDataSyncRequest(ElectricalData electricalData, ElectricalDev electricalDev, Integer jcAlarmStatus) {
|
||
JcHttpUtil.PowerDeviceDataSyncRequest request = new JcHttpUtil.PowerDeviceDataSyncRequest();
|
||
request.setProjectId(Long.valueOf(JcHttpUtil.getJcProjectId()));
|
||
request.setDeviceNo(electricalData.getDevSn());
|
||
request.setDeviceName(electricalDev.getDevName());
|
||
request.setDeviceStatus("1");
|
||
request.setDataDate(DateUtil.formatDateTime(DateUtil.parseDateTime(electricalData.getUploadTime())));
|
||
request.setEnvirwarm(Convert.toDouble(electricalData.getAmbientTemperature()));
|
||
request.setAwarm(Convert.toDouble(electricalData.getCableTemperatureA()));
|
||
request.setBwarm(Convert.toDouble(electricalData.getCableTemperatureB()));
|
||
request.setCwarm(Convert.toDouble(electricalData.getCableTemperatureC()));
|
||
request.setVoltageA(Convert.toDouble(electricalData.getVoltageA()));
|
||
request.setVoltageB(Convert.toDouble(electricalData.getVoltageB()));
|
||
request.setVoltageC(Convert.toDouble(electricalData.getVoltageC()));
|
||
request.setCurrentA(Convert.toDouble(electricalData.getPhaseCurrentA()));
|
||
request.setCurrentB(Convert.toDouble(electricalData.getPhaseCurrentB()));
|
||
request.setCurrentC(Convert.toDouble(electricalData.getPhaseCurrentC()));
|
||
request.setLeak(Convert.toDouble(electricalData.getElectricLeakage()));
|
||
request.setAlarmStatus(jcAlarmStatus);
|
||
return request;
|
||
}
|
||
}
|