package com.fdkankan.fusion.mq.consumer; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.fdkankan.fusion.entity.*; import com.fdkankan.fusion.mq.vo.LaserSceneGpsVo; import com.fdkankan.fusion.request.CaseParam; import com.fdkankan.fusion.request.SceneNumParam; import com.fdkankan.fusion.service.*; import com.rabbitmq.client.Channel; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.Queue; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import scala.Int; import javax.lang.model.element.TypeElement; import javax.swing.*; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; /** */ @Slf4j @Component public class CaseAddSceneConsumer { @Autowired IScenePlusService scenePlusService; @Autowired ICaseService caseService; @Autowired IUserService userService; @Autowired IJyUserService jyUserService; @Autowired ICaseNumService caseNumService; @RabbitListener( queuesToDeclare = @Queue("${queue.fusion.case-add:queue-aj-add-scene}") ) public void consumerQueue(Channel channel, Message message) { try { String messageId = message.getMessageProperties().getMessageId(); String msg = new String(message.getBody(), StandardCharsets.UTF_8); log.info("queue-aj-add-scene-mq--messageId:{},msg:{}",messageId,msg); channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); JSONObject jsonObject = JSON.parseObject(msg); String num = jsonObject.getString("num"); String kNumber = jsonObject.getString("kNo"); ScenePlus scenePlus = scenePlusService.getByNum(num); if(scenePlus == null){ log.info("queue-aj-add-scene------场景为空:{},{}",num,kNumber); return; } CaseEntity caseEntity = caseService.getKnumber(kNumber); if(caseEntity == null){ User user = userService.getById(scenePlus.getUserId()); if(user == null){ log.info("queue-aj-add-scene------user为空:{},{}",num,kNumber); return; } JyUser jyUser = jyUserService.getByUserId(user.getId()); if(jyUser == null){ log.info("queue-aj-add-scene------jyUser为空:{},{}",num,kNumber); return; } caseEntity = new CaseEntity(); caseEntity.setCaseTitle(kNumber); caseEntity.setUserName(user.getUserName()); caseEntity.setSysUserId(jyUser.getSysUserId()); caseEntity.setKNumber(kNumber); caseService.save(caseEntity); } CaseParam caseParam = new CaseParam(); caseParam.setCaseId(caseEntity.getCaseId()); caseParam.setSceneNumParam(getSceneParam(caseEntity.getCaseId(),scenePlus)); caseService.addScene(caseParam); }catch (Exception e){ log.info("queue-aj-add-scene------消费失败",e); }finally { } } public List getSceneParam (Integer caseId,ScenePlus scenePlus){ List params = new ArrayList<>(); HashMap> map = caseNumService.getTypeMap(caseId); List typeList = getTypeBySceneSource(scenePlus.getSceneSource()); for (Integer type : typeList) { map.computeIfAbsent(type, k -> new ArrayList<>()); List list = map.get(type); list.add(scenePlus.getNum()); } for (Integer type : map.keySet()) { SceneNumParam sceneNumParam = new SceneNumParam(); sceneNumParam.setNumList(map.get(type)); sceneNumParam.setType(type); params.add(sceneNumParam); } return params; } private List getTypeBySceneSource(Integer sceneSource) { switch (sceneSource){ case 3 : return Arrays.asList(1); case 4 : return Arrays.asList(2,4); case 5 : return Arrays.asList(5,6); default: return Arrays.asList(0); } } }