357 lines
16 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}