357 lines
16 KiB
Java
Raw Normal View History

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.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 com.zhgd.xmgl.call.util.jc.AESUtil;
import com.zhgd.xmgl.call.util.jc.JcHttpUtil;
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()));
2025-12-11 11:28:12 +08:00
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));
}
2025-12-11 11:28:12 +08:00
if (StrUtil.isNotBlank(workerInfo.getIdCardUpPhotoUrl())) {
form.setHeadImg(PathUtil.getServerUrl() + "/image/" + 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(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(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;
}
}