package com.zhgd.xmgl.async; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.zhgd.mqtt.bean.PushPayload; import com.zhgd.mqtt.server.IMqttSender; import com.zhgd.xmgl.call.HousingDataCall; import com.zhgd.xmgl.call.WkServiceuCall; import com.zhgd.xmgl.modules.govtapi.GovtOpenApiService; import com.zhgd.xmgl.modules.worker.entity.*; import com.zhgd.xmgl.modules.worker.mapper.EnterpriseInfoMapper; import com.zhgd.xmgl.modules.worker.mapper.DepartmentInfoMapper; import com.zhgd.xmgl.modules.worker.mapper.TeamInfoMapper; import com.zhgd.xmgl.modules.worker.service.IWorkerAttendancePresenceService; import com.zhgd.xmgl.util.EnvironmentUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; /** * @program: wisdomSite * @description: 异步发送考勤操作 * @author: Mr.Peng * @create: 2021-06-30 14:51 **/ @Slf4j @Component public class AsyncSendAttendance { @Autowired private HousingDataCall housingDataCall; @Autowired private EnterpriseInfoMapper enterpriseInfoMapper; @Autowired private TeamInfoMapper teamInfoMapper; @Autowired private DepartmentInfoMapper departmentInfoMapper; @Autowired private IMqttSender mqttPushClient; @Autowired private IWorkerAttendancePresenceService workerAttendancePresenceService; @Autowired private WkServiceuCall wkServiceuCall; @Autowired private EnvironmentUtil environmentUtil; @Autowired private GovtOpenApiService govtOpenApiService; @Async("sendAttendanceExecutor") public void saveAndSendAttendance(WorkerAttendance workerAttendance, WorkerInfo info){ try { if (environmentUtil.isJlwProd()) { // 向政务平台发送数据 govtOpenApiService.workerAttendanceSync(workerAttendance); } //计算在场 workerAttendancePresenceService.addWorkerAttendancePresence(workerAttendance); //上传住建 housingDataCall.sendAddWorkerAttendance(workerAttendance.getProjectSn(),info,workerAttendance); //向前台发送考勤数据 sendFrontEndNewAttendance(workerAttendance,info); //判断是否向万科发送考勤 wkServiceuCall.sendAddPassRecord(info,workerAttendance); }catch (Exception e){ log.error("error:", e); } } private void sendFrontEndNewAttendance(WorkerAttendance workerAttendance, WorkerInfo info) { try { JSONObject object= (JSONObject) JSONObject.toJSON(workerAttendance); object.put("idCard",info.getIdCard()); object.put("workerName",info.getWorkerName()); object.put("fieldAcquisitionUrl",info.getFieldAcquisitionUrl()); EnterpriseInfo enterpriseInfo=enterpriseInfoMapper.selectById(info.getEnterpriseId()); if(enterpriseInfo!=null) { object.put("enterpriseName", enterpriseInfo.getEnterpriseName()); }else{ object.put("enterpriseName", ""); } TeamInfo teamInfo=teamInfoMapper.selectById(info.getTeamId()); if(teamInfo!=null) { object.put("teamName", teamInfo.getTeamName()); }else{ object.put("teamName", ""); } DepartmentInfo departmentInfo=departmentInfoMapper.selectById(info.getTeamId()); if(departmentInfo!=null) { object.put("departmentName", departmentInfo.getDepartmentName()); }else{ object.put("departmentName", ""); } PushPayload pushMessage = PushPayload.getPushPayloadBuider().setAccountId(workerAttendance.getProjectSn()) .setTitle("考勤") .setContent(JSON.toJSONString(object, SerializerFeature.WriteMapNullValue)) .setType("1") .setItemType("0") .bulid(); String kdTopic = "attendance"+workerAttendance.getProjectSn(); mqttPushClient.sendToMqtt(kdTopic, pushMessage.toString()); }catch (Exception e){ log.error("error:", e); } } }