package com.huimv.wine.ws.admin; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONPObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.huimv.wine.common.EventWsErrUtil; import com.huimv.wine.entity.Manager; import com.huimv.wine.entity.Warn; import com.huimv.wine.entity.vo.*; import com.huimv.wine.mapper.WarnMapper; import com.huimv.wine.mapper.WineMapper; import com.huimv.wine.mapper.WorkerMapper; import com.huimv.wine.utils.Result; import com.huimv.wine.utils.SpringContextUtil; import com.huimv.wine.utils.WebsocketManagerUtil; import com.huimv.wine.utils.WebsocketWorkerUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.websocket.Session; import java.util.ArrayList; import java.util.List; @Component public class AdminWine { public void handle(JSONObject message, Session session, Manager manager) { String event = message.getString("event"); JSONObject data = message.getJSONObject("data"); switch (event) { case "adminWineChangeQuery": query(session, manager, data); break; case "adminWineChangeQueryWine": queryWine(session, message.getString("data")); break; case "adminWineChangeQueryWorker": queryWorker(session, manager, message.getString("data")); break; case "adminWineChangeAssign": assign(session, manager, data); break; case "adminWineDeviceFix": deviceFix(session, manager, data); break; case "adminWineHistoryQueryWorker": historyQueryWorker(session, manager, data); break; case "adminWineHistoryQueryOrder": queryOrder(session, manager, data); break; case "adminWineHistoryOrderUpdate": orderUpdate(session, data); break; case "adminWineHistoryOrderDelete": orderDelete(session, data); break; default: WsEvent wsEvent = EventWsErrUtil.getWsErr("unrecognized event"); WebsocketManagerUtil.sendMessage(session, wsEvent); break; } } private void query(Session session, Manager manager, JSONObject data) { WarnMapper warnMapper = SpringContextUtil.getBean(WarnMapper.class); AdminWineChangeQueryParam adminWineChangeQueryParam = JSONObject.toJavaObject(data,AdminWineChangeQueryParam.class); Page page = new Page<>(adminWineChangeQueryParam.getPage(),adminWineChangeQueryParam.getLimit()); String like = "%s"+adminWineChangeQueryParam.getCond()+"%s"; Page warnQueryResultPage = warnMapper.warnQuery(page,manager.getId(),adminWineChangeQueryParam.getDeal(),like); Page warnQueryResultVoPage = new Page<>(); List warnQueryResultVoList = new ArrayList<>(); for (WarnQueryResult record : warnQueryResultPage.getRecords()) { WarnQueryResultVo warnQueryResultVo = new WarnQueryResultVo(); BeanUtil.copyProperties(record,warnQueryResultVo); List olds = new ArrayList(); olds.add(createWineWithIdNameRemain(record.getW1id(),record.getW1name(),record.getW1remain())); olds.add(createWineWithIdNameRemain(record.getW2id(),record.getW2name(),record.getW2remain())); olds.add(createWineWithIdNameRemain(record.getW3id(),record.getW3name(),record.getW3remain())); olds.add(createWineWithIdNameRemain(record.getW4id(),record.getW4name(),record.getW4remain())); warnQueryResultVo.setOld(olds); warnQueryResultVoList.add(warnQueryResultVo); } warnQueryResultVoPage.setRecords(warnQueryResultVoList); warnQueryResultVoPage.setCurrent(warnQueryResultPage.getCurrent()); warnQueryResultVoPage.setTotal(warnQueryResultPage.getTotal()); warnQueryResultVoPage.setCountId(warnQueryResultPage.getCountId()); WsEvent wsEvent = new WsEvent("adminWineChangeQueryRes",Result.success(warnQueryResultVoPage)); WebsocketWorkerUtil.sendMessage(session,wsEvent); } private void queryWine(Session session, String cond) { WineMapper wineMapper = SpringContextUtil.getBean(WineMapper.class); String like = "%"+cond+"%s"; List wineWithIdNameVos = wineMapper.WinesQueryByIdOrName(like); WsEvent wsEvent = new WsEvent("adminWineChangeQueryWineRes",Result.success(wineWithIdNameVos)); WebsocketWorkerUtil.sendMessage(session,wsEvent); } private void queryWorker(Session session, Manager manager, String cond) { WorkerMapper workerMapper = SpringContextUtil.getBean(WorkerMapper.class); String like = "%"+cond+"%s"; List workerWithIdPhoneNames = workerMapper.WorkersQueryByPhoneOrName(manager.getId(),like); WsEvent wsEvent = new WsEvent("adminWineChangeQueryWorkerRes",Result.success(workerWithIdPhoneNames)); WebsocketWorkerUtil.sendMessage(session,wsEvent); } private void assign(Session session, Manager manager, JSONObject data) { WarnMapper warnMapper = SpringContextUtil.getBean(WarnMapper.class); AdminWineAssignParam adminWineAssignParam = JSONObject.toJavaObject(data, AdminWineAssignParam.class); if (ObjectUtil.isEmpty(adminWineAssignParam.getWorker())){ WsEvent wsEvent = new WsEvent("adminWineChangeAssignRes",Result.fail("请选择上酒工")); WebsocketWorkerUtil.sendMessage(session,wsEvent); return; } Warn warn = warnMapper.selectById(adminWineAssignParam.getId()); if (ObjectUtil.isEmpty(warn)){ WsEvent wsEvent = new WsEvent("adminWineChangeAssignRes",Result.fail("报警不存在")); WebsocketWorkerUtil.sendMessage(session,wsEvent); return; } } private void deviceFix(Session session, Manager manager, JSONObject data) { } private void historyQueryWorker(Session session, Manager manager, JSONObject data) { } private void queryOrder(Session session, Manager manager, JSONObject data) { } private void orderUpdate(Session session, JSONObject data) { } private void orderDelete(Session session, JSONObject data) { } private static WineWithIdNameRemainVo createWineWithIdNameRemain(int id, String name, int remain) { WineWithIdNameRemainVo wine = new WineWithIdNameRemainVo(); wine.setId(id); wine.setName(name); wine.setRemain(remain); return wine; } }