Browse Source

비행 구역 buffer 작업

feature/flight-plan
노승철 2 years ago
parent
commit
62d7bbb0a8
  1. 52
      src/components/basis/flight/plan/FlightPlanAreaDetailForm.js
  2. 2
      src/components/basis/flight/plan/FlightPlanGrid.js
  3. 5
      src/containers/basis/flight/plan/FlightPlanAreaDetailContainer.js
  4. 2
      src/containers/basis/flight/plan/FlightPlanContainer.js
  5. 2
      src/containers/basis/flight/plan/FlightPlanDetailContainer.js
  6. 17
      src/modules/basis/flight/actions/basisFlightAction.ts
  7. 12
      src/modules/basis/flight/apis/basisFlightApi.ts
  8. 33
      src/modules/basis/flight/models/basisFlightModel.ts
  9. 7
      src/modules/basis/flight/reducers/basisFlightReducer.ts
  10. 28
      src/modules/basis/flight/sagas/basisFlightSaga.ts

52
src/components/basis/flight/plan/FlightPlanAreaDetailForm.js

@ -15,7 +15,7 @@ import { FlightPlanDraw } from '../../../map/naver/draw/FlightPlanDraw';
import { drawTypeChangeAction, drawCheckAction } from '../../../../modules/control/map/actions/controlMapActions'; import { drawTypeChangeAction, drawCheckAction } from '../../../../modules/control/map/actions/controlMapActions';
import { FlightPlanDrawTest } from '../../../map/naver/draw/FlightPlanDrawTest'; import { FlightPlanDrawTest } from '../../../map/naver/draw/FlightPlanDrawTest';
const FlightPlanAreaDetailForm = ({ handleSave, handleClose, handleChange, data }) => { const FlightPlanAreaDetailForm = ({ handleSave, handleClose, handleChange, handleBufferList, data }) => {
const coordList = data ? data[0].coordList : null; const coordList = data ? data[0].coordList : null;
@ -88,25 +88,37 @@ const FlightPlanAreaDetailForm = ({ handleSave, handleClose, handleChange, data
<div className='search-info-box'> <div className='search-info-box'>
<Row> <Row>
<Col className='list-input' lg={6} md={6} sm={12}> <Col className='list-input' lg={6} md={6} sm={12}>
<FormGroup> <FormGroup className='m_ft'>
<Label for='test'><span className='necessary'>*</span>(m)</Label> <div className='m_ft_box'>
<Input <Label for='test'><span className='necessary'>*</span>(m)</Label>
type='text' <Input
id='bufferZone' type='text'
name='bufferZone' id='bufferZone'
bsSize='sm' name='bufferZone'
placeholder='반경' bsSize='sm'
value={data ? data[0].bufferZone : ''} placeholder='반경'
onChange={(e) => { value={data ? data[0].bufferZone : ''}
const {name, value} = e.target; onChange={(e) => {
handleChange({ const {name, value} = e.target;
name, handleChange({
value name,
}) value
}} })
/> }}
</FormGroup> />
</Col> </div>
<div className='m_ft_box'>
<Button.Ripple
className='mr-1'
color='primary'
size='sm'
onClick={() => handleBufferList()}
>
적용
</Button.Ripple>
</div>
</FormGroup>
</Col>
</Row> </Row>
</div> </div>
<div className='search-info-box'> <div className='search-info-box'>

2
src/components/basis/flight/plan/FlightPlanGrid.js

@ -7,7 +7,7 @@ import {Redirect} from 'react-router-dom';
const FlightPlanGrid = ({movePage, planListData, handleMoveDetail}) => { const FlightPlanGrid = ({movePage, planListData, handleMoveDetail}) => {
const columns = [ const columns = [
{id: 'planSno', name: '번호', cell: row => (<div>{row.planSno}</div>)}, {id: 'planSno', name: '번호', cell: (row, i) => (<div>{i+1}</div>)},
{id: 'fltPurpose', name: '비행목적', cell: row => (<div>{row.fltPurpose}</div>)}, {id: 'fltPurpose', name: '비행목적', cell: row => (<div>{row.fltPurpose}</div>)},
{ {
id: 'fltMethod', name: '비행방식', cell: row => { id: 'fltMethod', name: '비행방식', cell: row => {

5
src/containers/basis/flight/plan/FlightPlanAreaDetailContainer.js

@ -42,6 +42,10 @@ const FlightPlanAreaDetailContainer = ({ handleModal }) => {
}) })
} }
const handleBufferList = () => {
dispatch(Actions.FLIGHT_PLAN_AREA_BUFFER_LIST.request(areaDetail));
}
useEffect(() => { useEffect(() => {
// 좌표등록 (등록 시 데이터 초기화) // 좌표등록 (등록 시 데이터 초기화)
if(areaCoordList !== undefined) { if(areaCoordList !== undefined) {
@ -69,6 +73,7 @@ const FlightPlanAreaDetailContainer = ({ handleModal }) => {
handleClose={handleClose} handleClose={handleClose}
handleSave={handleSave} handleSave={handleSave}
handleChange={handleChange} handleChange={handleChange}
handleBufferList={handleBufferList}
areaCoordList={areaCoordList} areaCoordList={areaCoordList}
data={areaDetail} data={areaDetail}
/> />

2
src/containers/basis/flight/plan/FlightPlanContainer.js

@ -13,7 +13,7 @@ import FlightPlanGroupGrid from '../../../../components/basis/flight/plan/Flight
const initSearchData = { const initSearchData = {
schFltStDt: moment().set({'h': 0, 'm': 0, 's': 0}).format('YYYY-MM-DD HH:mm:ss'), schFltStDt: moment().set({'date': 1, 'h': 0, 'm': 0, 's': 0}).format('YYYY-MM-DD HH:mm:ss'),
schFltEndDt: moment().set({'h': 23, 'm': 59, 's': 59}).format('YYYY-MM-DD HH:mm:ss'), schFltEndDt: moment().set({'h': 23, 'm': 59, 's': 59}).format('YYYY-MM-DD HH:mm:ss'),
aprvlYn: 'N', aprvlYn: 'N',
groupId: '', groupId: '',

2
src/containers/basis/flight/plan/FlightPlanDetailContainer.js

@ -313,6 +313,8 @@ const FlightPlanDetailContainer = () => {
} else { } else {
dispatch(Actions.FLIGHT_PLAN_UPDATE.request(detailData)); dispatch(Actions.FLIGHT_PLAN_UPDATE.request(detailData));
} }
dispatch(FlightAction.FLIGHT_PLAN_GROUP_SELECT( {cstmrSno: 0, groupId: '', groupNm: ''} ));
} }
// 삭제 // 삭제
const handleDelete = () => { const handleDelete = () => {

17
src/modules/basis/flight/actions/basisFlightAction.ts

@ -7,7 +7,7 @@ import {
FlightPlanAreaDataList, FlightPlanAreaDataList,
// FlightPlanArea, // FlightPlanArea,
FlightPlanData, FlightPlanData,
FlightPlanListRqData, FlightPlanPilotDataList, PilotSelectData, SelectGroupData FlightPlanListRqData, FlightPlanPilotDataList, PilotSelectData, SelectGroupData
} from '../models/basisFlightModel'; } from '../models/basisFlightModel';
@ -75,6 +75,11 @@ const AREA_DETAIL_LIST = 'basis/flight/plan/area/DETAIL_LIST';
// 비행계획서 그룹 선택 // 비행계획서 그룹 선택
const ROUP_SELECT = 'basis/flight/plan/group/select'; const ROUP_SELECT = 'basis/flight/plan/group/select';
// 버퍼 좌표 가져오기
const AREA_BUFFER_LIST_REQUEST = 'basis/flight/plan/area/BUFFER_LIST_REQUEST';
const AREA_BUFFER_LIST_SUCCESS = 'basis/flight/plan/area/BUFFER_LIST_SUCCESS';
const AREA_BUFFER_LIST_FAILURE = 'basis/flight/plan/area/BUFFER_LIST_FAILURE';
export const PUBLIC_AREA_LIST = createAsyncAction( export const PUBLIC_AREA_LIST = createAsyncAction(
PUBLIC_AREA_LIST_REQUEST, PUBLIC_AREA_LIST_REQUEST,
PUBLIC_AREA_LIST_SUCCESS, PUBLIC_AREA_LIST_SUCCESS,
@ -155,6 +160,13 @@ export const AREA_DETAIL_LIST_SAVE = createAction(AREA_DETAIL_LIST)<FlightPlanAr
// 비행 계획서 그룹 선택 // 비행 계획서 그룹 선택
export const FLIGHT_PLAN_GROUP_SELECT = createAction(ROUP_SELECT)<SelectGroupData>(); export const FLIGHT_PLAN_GROUP_SELECT = createAction(ROUP_SELECT)<SelectGroupData>();
// 버퍼 좌표 가져오기
export const FLIGHT_PLAN_AREA_BUFFER_LIST = createAsyncAction(
AREA_BUFFER_LIST_REQUEST,
AREA_BUFFER_LIST_SUCCESS,
AREA_BUFFER_LIST_FAILURE
)<FlightPlanAreaDataList, FlightPlanAreaDataList, AxiosError>();
const actions = { const actions = {
PUBLIC_AREA_LIST, PUBLIC_AREA_LIST,
// FLIGHT_PLAN_AREA, // FLIGHT_PLAN_AREA,
@ -171,7 +183,8 @@ const actions = {
PILOT_ARCRFT_SELECT_INIT, PILOT_ARCRFT_SELECT_INIT,
AREA_COORDINATE_LIST_SAVE, AREA_COORDINATE_LIST_SAVE,
AREA_DETAIL_LIST_SAVE, AREA_DETAIL_LIST_SAVE,
FLIGHT_PLAN_GROUP_SELECT FLIGHT_PLAN_GROUP_SELECT,
FLIGHT_PLAN_AREA_BUFFER_LIST
}; };
export type FlightAction = ActionType<typeof actions>; export type FlightAction = ActionType<typeof actions>;

12
src/modules/basis/flight/apis/basisFlightApi.ts

@ -1,6 +1,6 @@
import axios from '../../../utils/customAxiosUtil'; import axios from '../../../utils/customAxiosUtil';
import qs from 'qs'; import qs from 'qs';
import { FlightPlanData, FlightPlanListRqData } from '../models/basisFlightModel'; import { FlightPlanAreaData, FlightPlanAreaDataList, FlightPlanData, FlightPlanListRqData } from '../models/basisFlightModel';
export const flightPlanAPI = { export const flightPlanAPI = {
@ -49,5 +49,15 @@ export const flightPlanAPI = {
const res = await axios.get(`api/bas/flight/plan/arcrft/${groupId}`); const res = await axios.get(`api/bas/flight/plan/arcrft/${groupId}`);
console.log('>>> rs : ', res); console.log('>>> rs : ', res);
return res; return res;
},
listBuffer: async (data: FlightPlanAreaDataList) => {
console.log('>>> rq : ', data)
const queryString = qs.stringify(data, {
addQueryPrefix: true,
arrayFormat: 'brackets'
});
const res = await axios.post(`api/bas/flight/plan/area/buffer`, data);
console.log('>>> rs : ', res);
return res;
} }
} }

33
src/modules/basis/flight/models/basisFlightModel.ts

@ -11,7 +11,7 @@ export interface FlightState {
arcrftSelect: FlightPlanArcrftData | undefined arcrftSelect: FlightPlanArcrftData | undefined
areaCoordList: FlightPlanAreaData[] | undefined areaCoordList: FlightPlanAreaData[] | undefined
areaList: FlightPlanAreaData[] | undefined areaList: FlightPlanAreaData[] | undefined
selectGroup: SelectGroupData | undefined selectGroup: SelectGroupData | undefined
} }
export interface SelectGroupData { export interface SelectGroupData {
@ -70,6 +70,7 @@ export interface FlightPlanAreaData {
updateUserId?: string, updateUserId?: string,
updateDt?: string, updateDt?: string,
coordList?: FlightPlanAreaCoordDataList | undefined coordList?: FlightPlanAreaCoordDataList | undefined
bufferCoordList?: FlightPlanAreaCoordDataList | undefined
// docState: string, // docState: string,
} }
@ -167,14 +168,6 @@ export interface PilotSelectData {
zip: string zip: string
} }
export interface AreaCoordinateCreateData {
lat: number,
lon: number,
bufferZone: string,
radius: number
}
export const initFlight = { export const initFlight = {
selectGroup: { selectGroup: {
cstmrSno: 0, cstmrSno: 0,
@ -222,7 +215,15 @@ export const initFlight = {
lon: 0, lon: 0,
createUserId: '', createUserId: '',
createDt: '' createDt: ''
}] }],
bufferCoordList: [{
planAreaCoordSno: 0,
planAreaSno: 0,
lat: 0,
lon: 0,
createUserId: '',
createDt: ''
}],
}], }],
pilotList: [{ pilotList: [{
planPilotSno: 0, planPilotSno: 0,
@ -276,7 +277,7 @@ export const initFlight = {
pilotSelect: undefined, pilotSelect: undefined,
arcrftSelect: undefined, arcrftSelect: undefined,
areaCoordList: undefined, areaCoordList: undefined,
areaList: undefined areaList: undefined,
}; };
@ -410,7 +411,15 @@ export const initFlightBas = {
lon: 0, lon: 0,
createUserId: '', createUserId: '',
createDt: '' createDt: ''
}] }],
bufferCoordList: [{
planAreaCoordSno: 0,
planAreaSno: 0,
lat: 0,
lon: 0,
createUserId: '',
createDt: ''
}],
}], }],
pilotList: [{ pilotList: [{
planPilotSno: 0, planPilotSno: 0,

7
src/modules/basis/flight/reducers/basisFlightReducer.ts

@ -97,3 +97,10 @@ export const flightReducer = createReducer<FlightState, Actions.FlightAction>(in
draft.selectGroup = data; draft.selectGroup = data;
}) })
) )
// 비행 계획서 그룹 선택
.handleAction(Actions.FLIGHT_PLAN_AREA_BUFFER_LIST.success, (state, action) =>
produce(state, draft => {
const data = action.payload;
draft.areaCoordList = data;
})
)

28
src/modules/basis/flight/sagas/basisFlightSaga.ts

@ -287,6 +287,33 @@ function* listArcrftSaga(action: ActionType<typeof Actions.FLIGHT_PLAN_ARCRFT_LI
} }
} }
// get buffer list
function* listBuffer(action: ActionType<typeof Actions.FLIGHT_PLAN_AREA_BUFFER_LIST.request>) {
try {
const data = action.payload;
const response = yield call(Apis.flightPlanAPI.listBuffer, data);
if (response.errorCode) {
yield put(
MessageActions.IS_ERROR({
errorCode: response.errorCode,
errorMessage: response.errorMessage,
isHistoryBack: false,
isRefresh: false
})
);
return;
}
yield put(
Actions.FLIGHT_PLAN_AREA_BUFFER_LIST.success(response.data)
);
} catch (error: any) {
yield put(
Actions.FLIGHT_PLAN_AREA_BUFFER_LIST.failure(error)
);
}
}
export function* flightSaga() { export function* flightSaga() {
yield takeEvery(Actions.PUBLIC_AREA_LIST.request, listAreaSaga); yield takeEvery(Actions.PUBLIC_AREA_LIST.request, listAreaSaga);
// yield takeEvery(Actions.FLIGHT_PLAN_AREA.request, createFlightPlanArea); // yield takeEvery(Actions.FLIGHT_PLAN_AREA.request, createFlightPlanArea);
@ -297,4 +324,5 @@ export function* flightSaga() {
yield takeEvery(Actions.FLIGHT_PLAN_DELETE.request, deletePlanSaga) yield takeEvery(Actions.FLIGHT_PLAN_DELETE.request, deletePlanSaga)
yield takeEvery(Actions.FLIGHT_PLAN_PILOT_LIST.request, listPilotSaga) yield takeEvery(Actions.FLIGHT_PLAN_PILOT_LIST.request, listPilotSaga)
yield takeEvery(Actions.FLIGHT_PLAN_ARCRFT_LIST.request, listArcrftSaga) yield takeEvery(Actions.FLIGHT_PLAN_ARCRFT_LIST.request, listArcrftSaga)
yield takeEvery(Actions.FLIGHT_PLAN_AREA_BUFFER_LIST.request, listBuffer)
} }

Loading…
Cancel
Save