| | |
| | | <spring-boot.version>2.5.3</spring-boot.version> |
| | | <jedis.version>2.9.0</jedis.version> |
| | | <snakeyaml.version>1.33</snakeyaml.version> |
| | | <druid.version>1.2.27</druid.version> |
| | | </properties> |
| | | |
| | | <dependencies> |
| | |
| | | <dependency> |
| | | <groupId>com.alibaba</groupId> |
| | | <artifactId>druid-spring-boot-starter</artifactId> |
| | | <version>1.2.6</version> |
| | | <version>${druid.version}</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | |
| | | </build> |
| | | |
| | | </project> |
| | | |
| | |
| | | }) |
| | | } |
| | | |
| | | export const getCodeInfo = async (codeData, callback, errCallBack) => { |
| | | await request.post('/code/info', { |
| | | codeData, |
| | | }, { |
| | | headers: { 'Content-Type': 'application/x-www-form-urlencoded' } |
| | | }).then((res) => { |
| | | const { code, msg, data } = res.data; |
| | | if (code === 200) { |
| | | callback(data); |
| | | } else { |
| | | notify?.error(msg); |
| | | if (errCallBack) { |
| | | errCallBack(); |
| | | } |
| | | } |
| | | }).catch((error) => { |
| | | notify?.error(error.message); |
| | | console.error(error.message); |
| | | if (errCallBack) { |
| | | errCallBack(); |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const getCodeRouteList = async (codeData, callback, errCallBack) => { |
| | | await request.post('/code/route/list', { |
| | | codeData, |
| | | }, { |
| | | headers: { 'Content-Type': 'application/x-www-form-urlencoded' } |
| | | }).then((res) => { |
| | | const { code, msg, data } = res.data; |
| | | if (code === 200) { |
| | | callback(Array.isArray(data) ? data : []); |
| | | } else { |
| | | notify?.error(msg); |
| | | if (errCallBack) { |
| | | errCallBack(); |
| | | } |
| | | } |
| | | }).catch((error) => { |
| | | notify?.error(error.message); |
| | | console.error(error.message); |
| | | if (errCallBack) { |
| | | errCallBack(); |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const getCodeFuncStaList = async (codeData, callback, errCallBack) => { |
| | | await request.post('/code/funcSta/list', { |
| | | codeData, |
| | | }, { |
| | | headers: { 'Content-Type': 'application/x-www-form-urlencoded' } |
| | | }).then((res) => { |
| | | const { code, msg, data } = res.data; |
| | | if (code === 200) { |
| | | callback(Array.isArray(data) ? data : []); |
| | | } else { |
| | | notify?.error(msg); |
| | | if (errCallBack) { |
| | | errCallBack(); |
| | | } |
| | | } |
| | | }).catch((error) => { |
| | | notify?.error(error.message); |
| | | console.error(error.message); |
| | | if (errCallBack) { |
| | | errCallBack(); |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const getRouteList = async (zoneId, callback, errCallBack) => { |
| | | await request.post('/map/route/list', { |
| | | zoneId: zoneId, |
| | |
| | | console.error(error.message); |
| | | } |
| | | return null; |
| | | } |
| | | } |
| | |
| | | () => extractRelationItems(info, ['routeList', 'routes', 'routeRefs']), |
| | | [info] |
| | | ); |
| | | const funcStaBool = detectBoolean( |
| | | info?.funcStaBool ?? info?.isFuncSta ?? info?.funcStation ?? info?.funcStaFlag |
| | | const funcStaRelations = useMemo( |
| | | () => extractRelationItems(info, ['funcStaList', 'funcStas']), |
| | | [info] |
| | | ); |
| | | const funcStaText = info?.funcSta$ || info?.funcStaName || info?.funcStaType || info?.funcStaCode || info?.funcStaUuid || info?.funcSta; |
| | | |
| | | const ruleList = useMemo(() => normalizeDirRule(info?.dirRule), [info?.dirRule]); |
| | | |
| | |
| | | } |
| | | }; |
| | | |
| | | const funcStaLabel = funcStaBool == null |
| | | ? translate('common.enums.na') |
| | | : translate(funcStaBool ? 'common.enums.true' : 'common.enums.false'); |
| | | |
| | | return ( |
| | | <Box sx={{ pr: 1, pb: 3 }}> |
| | | <Grid container spacing={3} alignItems="flex-start"> |
| | |
| | | disabled={!info?.id} |
| | | sx={{ alignSelf: 'flex-start', textTransform: 'none', px: 3 }} |
| | | > |
| | | {translate('page.map.insight.code.actions.openDetail', { _: '进入 Code 页面' })} |
| | | {translate('page.map.insight.code.actions.openDetail', { _: '编辑' })} |
| | | </Button> |
| | | </Stack> |
| | | </Paper> |
| | |
| | | /> |
| | | </InfoPanel> |
| | | <InfoPanel title={translate('menu.funcSta', { _: '功能站' })}> |
| | | <Stack spacing={1}> |
| | | <BooleanDisplay |
| | | value={funcStaBool} |
| | | label={funcStaLabel} |
| | | /> |
| | | {funcStaText && funcStaText !== funcStaLabel && ( |
| | | <Typography variant="body2" color="text.secondary"> |
| | | {funcStaText} |
| | | </Typography> |
| | | )} |
| | | </Stack> |
| | | <RelationsChips |
| | | items={funcStaRelations} |
| | | emptyLabel={translate('page.map.insight.code.relations.empty', { _: '暂无关联信息' })} |
| | | /> |
| | | </InfoPanel> |
| | | </Stack> |
| | | </Paper> |
| | |
| | | return item; |
| | | } |
| | | if (typeof item === 'object') { |
| | | if (item.startCode$ && item.endCode$) { |
| | | return `${item.startCode$} -> ${item.endCode$}`; |
| | | } |
| | | if (item.name || item.type || item.state) { |
| | | return [item.name, item.type, item.state].filter(Boolean).join(' / '); |
| | | } |
| | | return item.name || item.code || item.data || item.no || item.uuid || item.locNo || item.staNo || JSON.stringify(item); |
| | | } |
| | | return String(item); |
| | |
| | | import { useTranslate } from 'react-admin'; |
| | | import { Box, Tabs, Tab, Divider } from '@mui/material'; |
| | | import JsonShow from '../../JsonShow'; |
| | | import { getPointInfo } from '../../http'; |
| | | import { getCodeInfo, getCodeRouteList, getCodeFuncStaList } from '../../http'; |
| | | import CodeMain from './CodeMain'; |
| | | |
| | | const CodeInsight = ({ sprite, setTitle }) => { |
| | |
| | | const [loading, setLoading] = useState(false); |
| | | |
| | | const codeLabel = translate('page.map.devices.code', { |
| | | _: translate('page.map.devices.point', { _: 'Code' }) |
| | | _: '地面码' |
| | | }); |
| | | |
| | | const fetchCodeInfo = useCallback(async (code, options = {}) => { |
| | |
| | | setTitle(`${codeLabel} - ${code}`); |
| | | setCurrentCode(code); |
| | | try { |
| | | await getPointInfo(code, (response) => { |
| | | setCodeInfo(response || null); |
| | | }); |
| | | const [info, routeList, funcStaList] = await Promise.all([ |
| | | new Promise((resolve) => { |
| | | getCodeInfo(code, resolve, () => resolve(null)); |
| | | }), |
| | | new Promise((resolve) => { |
| | | getCodeRouteList(code, resolve, () => resolve([])); |
| | | }), |
| | | new Promise((resolve) => { |
| | | getCodeFuncStaList(code, resolve, () => resolve([])); |
| | | }), |
| | | ]); |
| | | setCodeInfo(info ? { |
| | | ...info, |
| | | routeList, |
| | | funcStaList, |
| | | } : null); |
| | | } finally { |
| | | if (!options?.silent) { |
| | | setLoading(false); |
| | |
| | | <dependency> |
| | | <groupId>com.alibaba</groupId> |
| | | <artifactId>druid-spring-boot-starter</artifactId> |
| | | <version>1.2.6</version> |
| | | <version>${druid.version}</version> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | |
| | | import com.zy.acs.manager.common.utils.ExcelUtil; |
| | | import com.zy.acs.manager.manager.entity.Code; |
| | | import com.zy.acs.manager.manager.entity.CodeGap; |
| | | import com.zy.acs.manager.manager.entity.FuncSta; |
| | | import com.zy.acs.manager.manager.entity.Route; |
| | | import com.zy.acs.manager.manager.enums.StatusType; |
| | | import com.zy.acs.manager.manager.service.CodeGapService; |
| | | import com.zy.acs.manager.manager.service.CodeService; |
| | | import com.zy.acs.manager.manager.service.FuncStaService; |
| | | import com.zy.acs.manager.manager.service.RouteService; |
| | | import com.zy.acs.manager.manager.service.impl.CodeServiceImpl; |
| | | import com.zy.acs.manager.system.controller.BaseController; |
| | |
| | | private CodeGapService codeGapService; |
| | | @Autowired |
| | | private RouteService routeService; |
| | | @Autowired |
| | | private FuncStaService funcStaService; |
| | | |
| | | @PreAuthorize("hasAuthority('manager:code:list')") |
| | | @PostMapping("/code/page") |
| | |
| | | return R.ok().add(codeService.getCacheById(id)); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:code:list')") |
| | | @PostMapping("/code/info") |
| | | public R info(@RequestParam(required = false) String codeData) { |
| | | if (Cools.isEmpty(codeData)) { |
| | | return R.error(); |
| | | } |
| | | Code code = codeService.getCacheByData(codeData); |
| | | if (code == null) { |
| | | return R.error("Code Not Found"); |
| | | } |
| | | return R.ok().add(code); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:code:list')") |
| | | @PostMapping("/code/route/list") |
| | | public R routeList(@RequestParam(required = false) String codeData) { |
| | | if (Cools.isEmpty(codeData)) { |
| | | return R.error(); |
| | | } |
| | | Code code = codeService.getCacheByData(codeData); |
| | | if (code == null) { |
| | | return R.ok().add(Collections.emptyList()); |
| | | } |
| | | List<Route> routeList = routeService.list(new LambdaQueryWrapper<Route>() |
| | | .eq(Route::getStatus, StatusType.ENABLE.val) |
| | | .and(wrapper -> wrapper.eq(Route::getStartCode, code.getId()).or().eq(Route::getEndCode, code.getId())) |
| | | .orderByAsc(Route::getId)); |
| | | return R.ok().add(routeList); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:code:list')") |
| | | @PostMapping("/code/funcSta/list") |
| | | public R funcStaList(@RequestParam(required = false) String codeData) { |
| | | if (Cools.isEmpty(codeData)) { |
| | | return R.error(); |
| | | } |
| | | Code code = codeService.getCacheByData(codeData); |
| | | if (code == null) { |
| | | return R.ok().add(Collections.emptyList()); |
| | | } |
| | | List<FuncSta> funcStaList = funcStaService.list(new LambdaQueryWrapper<FuncSta>() |
| | | .eq(FuncSta::getCode, code.getId()) |
| | | .eq(FuncSta::getStatus, StatusType.ENABLE.val) |
| | | .orderByAsc(FuncSta::getId)); |
| | | return R.ok().add(funcStaList); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:code:save')") |
| | | @OperationLog("Create Code") |
| | | @PostMapping("/code/save") |