Browse Source

비행 구역 buffer 작업

feature/flight-plan
노승철 2 years ago
parent
commit
62d7bbb0a8
  1. 48
      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. 15
      src/modules/basis/flight/actions/basisFlightAction.ts
  7. 12
      src/modules/basis/flight/apis/basisFlightApi.ts
  8. 31
      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

48
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 { 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;
@ -88,23 +88,35 @@ const FlightPlanAreaDetailForm = ({ handleSave, handleClose, handleChange, data
<div className='search-info-box'>
<Row>
<Col className='list-input' lg={6} md={6} sm={12}>
<FormGroup>
<Label for='test'><span className='necessary'>*</span>(m)</Label>
<Input
type='text'
id='bufferZone'
name='bufferZone'
bsSize='sm'
placeholder='반경'
value={data ? data[0].bufferZone : ''}
onChange={(e) => {
const {name, value} = e.target;
handleChange({
name,
value
})
}}
/>
<FormGroup className='m_ft'>
<div className='m_ft_box'>
<Label for='test'><span className='necessary'>*</span>(m)</Label>
<Input
type='text'
id='bufferZone'
name='bufferZone'
bsSize='sm'
placeholder='반경'
value={data ? data[0].bufferZone : ''}
onChange={(e) => {
const {name, value} = e.target;
handleChange({
name,
value
})
}}
/>
</div>
<div className='m_ft_box'>
<Button.Ripple
className='mr-1'
color='primary'
size='sm'
onClick={() => handleBufferList()}
>
적용
</Button.Ripple>
</div>
</FormGroup>
</Col>
</Row>

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

@ -7,7 +7,7 @@ import {Redirect} from 'react-router-dom';
const FlightPlanGrid = ({movePage, planListData, handleMoveDetail}) => {
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: '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(() => {
// 좌표등록 (등록 시 데이터 초기화)
if(areaCoordList !== undefined) {
@ -69,6 +73,7 @@ const FlightPlanAreaDetailContainer = ({ handleModal }) => {
handleClose={handleClose}
handleSave={handleSave}
handleChange={handleChange}
handleBufferList={handleBufferList}
areaCoordList={areaCoordList}
data={areaDetail}
/>

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

@ -13,7 +13,7 @@ import FlightPlanGroupGrid from '../../../../components/basis/flight/plan/Flight
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'),
aprvlYn: 'N',
groupId: '',

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

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

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

@ -75,6 +75,11 @@ const AREA_DETAIL_LIST = 'basis/flight/plan/area/DETAIL_LIST';
// 비행계획서 그룹 선택
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(
PUBLIC_AREA_LIST_REQUEST,
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_AREA_BUFFER_LIST = createAsyncAction(
AREA_BUFFER_LIST_REQUEST,
AREA_BUFFER_LIST_SUCCESS,
AREA_BUFFER_LIST_FAILURE
)<FlightPlanAreaDataList, FlightPlanAreaDataList, AxiosError>();
const actions = {
PUBLIC_AREA_LIST,
// FLIGHT_PLAN_AREA,
@ -171,7 +183,8 @@ const actions = {
PILOT_ARCRFT_SELECT_INIT,
AREA_COORDINATE_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>;

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

@ -1,6 +1,6 @@
import axios from '../../../utils/customAxiosUtil';
import qs from 'qs';
import { FlightPlanData, FlightPlanListRqData } from '../models/basisFlightModel';
import { FlightPlanAreaData, FlightPlanAreaDataList, FlightPlanData, FlightPlanListRqData } from '../models/basisFlightModel';
export const flightPlanAPI = {
@ -49,5 +49,15 @@ export const flightPlanAPI = {
const res = await axios.get(`api/bas/flight/plan/arcrft/${groupId}`);
console.log('>>> rs : ', 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;
}
}

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

@ -70,6 +70,7 @@ export interface FlightPlanAreaData {
updateUserId?: string,
updateDt?: string,
coordList?: FlightPlanAreaCoordDataList | undefined
bufferCoordList?: FlightPlanAreaCoordDataList | undefined
// docState: string,
}
@ -167,14 +168,6 @@ export interface PilotSelectData {
zip: string
}
export interface AreaCoordinateCreateData {
lat: number,
lon: number,
bufferZone: string,
radius: number
}
export const initFlight = {
selectGroup: {
cstmrSno: 0,
@ -222,7 +215,15 @@ export const initFlight = {
lon: 0,
createUserId: '',
createDt: ''
}]
}],
bufferCoordList: [{
planAreaCoordSno: 0,
planAreaSno: 0,
lat: 0,
lon: 0,
createUserId: '',
createDt: ''
}],
}],
pilotList: [{
planPilotSno: 0,
@ -276,7 +277,7 @@ export const initFlight = {
pilotSelect: undefined,
arcrftSelect: undefined,
areaCoordList: undefined,
areaList: undefined
areaList: undefined,
};
@ -410,7 +411,15 @@ export const initFlightBas = {
lon: 0,
createUserId: '',
createDt: ''
}]
}],
bufferCoordList: [{
planAreaCoordSno: 0,
planAreaSno: 0,
lat: 0,
lon: 0,
createUserId: '',
createDt: ''
}],
}],
pilotList: [{
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;
})
)
// 비행 계획서 그룹 선택
.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() {
yield takeEvery(Actions.PUBLIC_AREA_LIST.request, listAreaSaga);
// 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_PILOT_LIST.request, listPilotSaga)
yield takeEvery(Actions.FLIGHT_PLAN_ARCRFT_LIST.request, listArcrftSaga)
yield takeEvery(Actions.FLIGHT_PLAN_AREA_BUFFER_LIST.request, listBuffer)
}

Loading…
Cancel
Save