package com.zy.asrs.controller; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.domain.param.SystemSwitchParam; import com.zy.asrs.entity.BasMap; import com.zy.asrs.service.BasMapService; import com.zy.common.model.MapNode; import com.zy.common.model.enums.NavigationMapType; import com.zy.common.utils.NavigateMapData; import com.zy.common.utils.RedisUtil; import com.zy.core.enums.RedisKeyType; import com.zy.core.properties.SlaveProperties; import com.zy.core.properties.SystemProperties; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.*; /** * 主控图接口 * Created by vincent on 2020-06-01 */ @Slf4j @RestController @RequestMapping("/console") public class ConsoleController { @Autowired private SlaveProperties slaveProperties; @Autowired private BasMapService basMapService; @Autowired private RedisUtil redisUtil; @Value("${super.pwd}") private String superPwd; @Autowired private NavigateMapData navigateMapData; @PostMapping("/system/running/status") @ManagerAuth(memo = "系统运行状态") public R systemRunningStatus(){ return R.ok().add(Cools.add("status", SystemProperties.WCS_RUNNING_STATUS.get())); } @PostMapping("/system/switch") @ManagerAuth(memo = "系统运行开关操作") public R systemSwitch(SystemSwitchParam param) throws InterruptedException { if (Cools.isEmpty(param.getOperatorType())){ return R.error(); } if (param.getOperatorType() == 0) { if (Cools.isEmpty(param.getPassword())){ return R.error("请输入口令"); } if (!param.getPassword().equals(SystemProperties.WCS_PASSWORD)){ return R.error("口令错误"); } } Thread.sleep(200L); SystemProperties.WCS_RUNNING_STATUS.set(param.getOperatorType()==1?Boolean.TRUE:Boolean.FALSE); return R.ok().add(Cools.add("status", SystemProperties.WCS_RUNNING_STATUS.get())); } /** * 获取地图楼层数据 */ @GetMapping("/map/lev/list") @ManagerAuth public R getMapLevList() { List basMaps = basMapService.selectList(new EntityWrapper().orderBy("lev", true)); ArrayList levList = new ArrayList<>(); for (BasMap basMap : basMaps) { levList.add(basMap.getLev()); } return R.ok().add(levList); } /** * 获取地图数据 */ @GetMapping("/map/{lev}/auth") @ManagerAuth public R getMapFromRedis(@PathVariable Integer lev) { Object data = redisUtil.get(RedisKeyType.MAP.key + lev); if (data == null) { return R.error(); } BasMap basMap = JSON.parseObject(data.toString(), BasMap.class); //解析json地图数据 ArrayList arrayList = JSON.parseObject(basMap.getData(), ArrayList.class); List> lists = navigateMapData.filterMap(NavigationMapType.NONE.id, arrayList, lev, null, null);//过滤地图数据 return R.ok().add(lists); } /** * 重置redis中的地图,将占用的库位全部解除 */ @GetMapping("/map/resetMap/auth") @ManagerAuth public R resetMapToRedis() { for (int i = 1; i <= 10; i++) {//总共10层楼 redisUtil.del(RedisKeyType.MAP.key + i); } return R.ok(); } /** * 重置redis中的地图,将占用的库位全部解除 */ @GetMapping("/map/resetMap/{lev}") @ManagerAuth(memo = "重置Redis地图") public R resetMapToRedisByLev(@PathVariable Integer lev, HttpServletRequest request) { redisUtil.del(RedisKeyType.MAP.key + lev); return R.ok(); } }