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())); form.setEmpName(workerInfo.getWorkerName()); Map 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.getIdCardDownPhotoUrl())) { form.setHeadImg(PathUtil.getServerUrl() + "/image/" + workerInfo.getIdCardDownPhotoUrl()); } 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 getCertificates(WorkerInfo workerInfo) { List certificateList = workerCertificateService.selectWorkerCertificateList(new MapBuilder() .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(PathUtil.getServerUrl() + "/image/" + FileUtils.urlToFileName(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() .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 devs; if (JcHttpUtil.isJcAll()) { devs = environmentDevService.list(null); } else { devs = environmentDevService.list(new LambdaQueryWrapper() .eq(EnvironmentDev::getProjectSn, JcHttpUtil.JC_PROJECTSN)); } Date now = new Date(); DateTime offsetHour = DateUtil.offsetHour(now, -1); ArrayList dustDataFormLists = Lists.newArrayList(); for (EnvironmentDev dev : devs) { DustNoiseData data = dustNoiseDataService.getOne(new LambdaQueryWrapper() .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; } }