|  |  | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
 |  |  | import com.zy.asrs.framework.common.Cools; | 
 |  |  | import com.zy.asrs.framework.exception.CoolException; | 
 |  |  | import com.zy.asrs.wcs.common.domain.enums.DictType; | 
 |  |  | import com.zy.asrs.wcs.core.map.controller.param.MapDataParam; | 
 |  |  | import com.zy.asrs.wcs.core.map.controller.param.MapQueryParam; | 
 |  |  | import com.zy.asrs.wcs.core.map.controller.result.LocVo; | 
 |  |  | import com.zy.asrs.wcs.core.utils.Utils; | 
 |  |  | import com.zy.asrs.wcs.system.entity.Dict; | 
 |  |  | import com.zy.asrs.wcs.system.entity.User; | 
 |  |  | import com.zy.asrs.wcs.system.service.DictService; | 
 |  |  | import com.zy.asrs.wcs.system.service.UserService; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  |  | 
 |  |  | import java.util.*; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * Created by vincent on 3/15/2024 | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private DictService dictService; | 
 |  |  |  | 
 |  |  |     public MapDataParam getMapData(MapQueryParam param, Long userId) { | 
 |  |  |  | 
 |  |  |         String dictFlag = "map-" + param.getFloor(); | 
 |  |  |         Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getFlag, dictFlag)); | 
 |  |  |         if (Cools.isEmpty(dict)) { | 
 |  |  |             return null; | 
 |  |  |         } else { | 
 |  |  |             return JSON.parseObject(dict.getValue(), MapDataParam.class) ; | 
 |  |  |     public String getMapFloorList(Long userId) { | 
 |  |  |         String floorKey = "map-floor-list"; | 
 |  |  |         Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getFlag, floorKey)); | 
 |  |  |         if (null == dict) { | 
 |  |  |             dict = new Dict(); | 
 |  |  |             dict.setName(floorKey); | 
 |  |  |             dict.setFlag(floorKey); | 
 |  |  |             dict.setType(DictType.JSON.flag); | 
 |  |  |             dict.setValue(floorListStr); | 
 |  |  |             dict.setCreateBy(userId); | 
 |  |  |             dict.setUpdateBy(userId); | 
 |  |  |             if (!dictService.save(dict)) { | 
 |  |  |                 throw new CoolException("服务器内部错误"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return Optional.ofNullable(dict).map(Dict::getValue).orElse(null); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | //        User user = userService.getById(userId); | 
 |  |  | //        if (Cools.isEmpty(user.getMemo())) { | 
 |  |  | //            return new MapDataParam(); | 
 |  |  | //        } | 
 |  |  | //        return JSON.parseObject(user.getMemo(), MapDataParam.class); | 
 |  |  |     public String getMapData(MapQueryParam param, Long userId) { | 
 |  |  |         String mapKey = getMapKey(param.getFloor()); | 
 |  |  |         Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getFlag, mapKey)); | 
 |  |  |         return Optional.ofNullable(dict).map(Dict::getValue).orElse(null); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public void saveMapData(MapDataParam param, Long userId) { | 
 |  |  |         User user = userService.getById(userId); | 
 |  |  |         user.setMemo(JSON.toJSONString(param)); | 
 |  |  |         if (!userService.updateById(user)) { | 
 |  |  |             throw new CoolException("服务器内部错误"); | 
 |  |  |         String mapKey = getMapKey(param.getFloor()); | 
 |  |  |         Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getFlag, mapKey)); | 
 |  |  |         if (Cools.isEmpty(dict)) { | 
 |  |  |            dict = new Dict(); | 
 |  |  |            dict.setName(mapKey); | 
 |  |  |            dict.setFlag(mapKey); | 
 |  |  |            dict.setType(DictType.JSON.flag); | 
 |  |  |            dict.setValue(JSON.toJSONString(param.getItemList())); | 
 |  |  |            dict.setCreateBy(userId); | 
 |  |  |            dict.setUpdateBy(userId); | 
 |  |  |            if (!dictService.save(dict)) { | 
 |  |  |                throw new CoolException("服务器内部错误"); | 
 |  |  |            } | 
 |  |  |         } else { | 
 |  |  |             dict.setValue(JSON.toJSONString(param.getItemList())); | 
 |  |  |             dict.setUpdateTime(new Date()); | 
 |  |  |             dict.setUpdateBy(userId); | 
 |  |  |             if (!dictService.updateById(dict)) { | 
 |  |  |                 throw new CoolException("服务器内部错误"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public List<LocVo> getShelfLocNoList(String locNo) { | 
 |  |  |         List<LocVo> locVos = new ArrayList<>(); | 
 |  |  |         int row = Utils.getRow(locNo); | 
 |  |  |         int bay = Utils.getBay(locNo); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         String[] statusOptions = {"F", "D", "O"}; | 
 |  |  |         Random random = new Random(); | 
 |  |  |         for (int lev = 1; lev < 6; lev++) { | 
 |  |  |             locVos.add(new LocVo(Utils.getLocNo(row, bay, lev), statusOptions[random.nextInt(statusOptions.length)])); | 
 |  |  |         } | 
 |  |  |         return locVos; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private String getMapKey(Integer floor) { | 
 |  |  |         if (null != floor) { | 
 |  |  |             return "map-" + floor; | 
 |  |  |         } | 
 |  |  |         return "map"; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private final String floorListStr = "[\n" + | 
 |  |  |             "    {\n" + | 
 |  |  |             "        label: '1F',\n" + | 
 |  |  |             "        value: 1\n" + | 
 |  |  |             "    },\n" + | 
 |  |  |             "    {\n" + | 
 |  |  |             "        label: '2F',\n" + | 
 |  |  |             "        value: 2\n" + | 
 |  |  |             "    },\n" + | 
 |  |  |             "    {\n" + | 
 |  |  |             "        label: '3F',\n" + | 
 |  |  |             "        value: 3\n" + | 
 |  |  |             "    },\n" + | 
 |  |  |             "    {\n" + | 
 |  |  |             "        label: '4F',\n" + | 
 |  |  |             "        value: 4\n" + | 
 |  |  |             "    },\n" + | 
 |  |  |             "    {\n" + | 
 |  |  |             "        label: '5F',\n" + | 
 |  |  |             "        value: 5\n" + | 
 |  |  |             "    },\n" + | 
 |  |  |             "]"; | 
 |  |  |  | 
 |  |  | } |