Commit 734b7525 authored by shigemi miura's avatar shigemi miura

画像送信成功

parent 95aff94d
...@@ -32,10 +32,13 @@ class GetEcaList { ...@@ -32,10 +32,13 @@ class GetEcaList {
} }
for ecaList in res { for ecaList in res {
if var value = ecaAreas[ecaList.areaId]{ if var value = ecaAreas[ecaList.areaId]{
value.id = ecaList.id
value.userName = ecaList.userName
value.isEnable = true value.isEnable = true
value.swNotice = ecaList.noticeRange value.swNotice = ecaList.noticeRange
value.swStart = ecaList.startRange value.swStart = ecaList.startRange
value.swFinish = ecaList.finishRange value.swFinish = ecaList.finishRange
value.lastUpdateTime = ecaList.lastUpdateTime
if ecaList.status & serverRunning == serverRunning { if ecaList.status & serverRunning == serverRunning {
value.isRunning = true value.isRunning = true
value.status = setEcaServer(status: ecaList.status) value.status = setEcaServer(status: ecaList.status)
......
...@@ -29,7 +29,9 @@ let serverIncomplete = 0x00000200 //ECAタスク未完了 (燃料切替未実 ...@@ -29,7 +29,9 @@ let serverIncomplete = 0x00000200 //ECAタスク未完了 (燃料切替未実
let serverCancel = 0x00000400 //ECAタスクキャンセル (タスク終了・タスク未完了前にキャンセル) let serverCancel = 0x00000400 //ECAタスクキャンセル (タスク終了・タスク未完了前にキャンセル)
struct RegisteredEca { struct RegisteredEca {
var id: String = ""
var areaId: Int = 0 var areaId: Int = 0
var userName: String = ""
var isEnable: Bool = false //ECA有効 var isEnable: Bool = false //ECA有効
var isRunning: Bool = false //ECA実行中 var isRunning: Bool = false //ECA実行中
var name: String = "" //ECA名称 var name: String = "" //ECA名称
...@@ -40,6 +42,7 @@ struct RegisteredEca { ...@@ -40,6 +42,7 @@ struct RegisteredEca {
var datetime: String = "" //時刻(UTC ISO8601準拠) var datetime: String = "" //時刻(UTC ISO8601準拠)
var color: String = "" //ライン色(ARGB) var color: String = "" //ライン色(ARGB)
var width: Int = 1 //ライン幅 var width: Int = 1 //ライン幅
var lastUpdateTime: String = ""
var centerPosition: CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: 0.0, longitude: 0.0) var centerPosition: CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: 0.0, longitude: 0.0)
var zoomLevel: CGFloat = 11.0 var zoomLevel: CGFloat = 11.0
var points: [CLLocationCoordinate2D] = [] var points: [CLLocationCoordinate2D] = []
......
...@@ -9,6 +9,7 @@ import Foundation ...@@ -9,6 +9,7 @@ import Foundation
struct ReqNgaList : Codable { struct ReqNgaList : Codable {
var id: String = "" var id: String = ""
var name: String = ""
var lock: Bool = false var lock: Bool = false
var enabled: Bool = false var enabled: Bool = false
var geometry: [points] = [] var geometry: [points] = []
......
...@@ -8,14 +8,15 @@ ...@@ -8,14 +8,15 @@
import Foundation import Foundation
struct ReqTaskList : Codable { struct ReqTaskList : Codable {
// var id: String = "" var id: String = ""
var areaId: Int = 0 var areaId: Int = 0
var taskName: String = "" var taskName: String = ""
// var name: String = "" var userName: String = ""
var noticeRange: Float = 0.0 var noticeRange: Float = 0.0
var startRange: Float = 0.0 var startRange: Float = 0.0
var finishRange: Float = 0.0 var finishRange: Float = 0.0
var status: Int = 0 var status: Int = 0
var lastUpdateTime: String = ""
init(Id: Int) { init(Id: Int) {
self.areaId = Id self.areaId = Id
......
...@@ -31,7 +31,7 @@ class GetNgaList { ...@@ -31,7 +31,7 @@ class GetNgaList {
if let id = NSUUID(uuidString: ngaList.id) { if let id = NSUUID(uuidString: ngaList.id) {
if var nga = ngaAreas[id as UUID] { if var nga = ngaAreas[id as UUID] {
print(debug: "Test: 1\(nga)") print(debug: "Test: 1\(nga)")
// nga.name = ngaList.name nga.name = ngaList.name
nga.isLock = ngaList.lock nga.isLock = ngaList.lock
nga.points.removeAll() nga.points.removeAll()
for pos in ngaList.geometry{ for pos in ngaList.geometry{
...@@ -43,6 +43,7 @@ class GetNgaList { ...@@ -43,6 +43,7 @@ class GetNgaList {
} else { } else {
if var nga = RegisteredNga(areaName: "test dammy") { //TODO: 名称はダミー if var nga = RegisteredNga(areaName: "test dammy") { //TODO: 名称はダミー
nga.areaId = id as UUID nga.areaId = id as UUID
nga.name = ngaList.name
nga.isLock = ngaList.lock nga.isLock = ngaList.lock
nga.isRunning = ngaList.enabled nga.isRunning = ngaList.enabled
if !ngaList.enabled { if !ngaList.enabled {
......
...@@ -85,13 +85,20 @@ class ServerSession{ ...@@ -85,13 +85,20 @@ class ServerSession{
req.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") req.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
req.setValue("\(postdata.count)", forHTTPHeaderField: "Content-Length") req.setValue("\(postdata.count)", forHTTPHeaderField: "Content-Length")
req.httpBody = postdata req.httpBody = postdata
req.timeoutInterval = 20 // タイムアウト3秒 → Amedasでタイムアウトエラー20秒に変更 // req.timeoutInterval = 20 // タイムアウト3秒 → Amedasでタイムアウトエラー20秒に変更
// サーバー送信 // let session = URLSession(configuration: .default, delegate: nil, delegateQueue: OperationQueue.main)
let session = URLSession(configuration: .default, delegate: nil, delegateQueue: OperationQueue.main) URLSession.shared.dataTask(with: req) {(data, response, error) in
session.dataTask(with: req, completionHandler: {(data, response, error) in // var req = URLRequest(url: req_url)
session.finishTasksAndInvalidate() // req.httpMethod = "POST"
// let headers = ["Content-Type":"multipart/form-data; boundary=\(boundary)"]
// let urlConfig = URLSessionConfiguration.default
// urlConfig.httpAdditionalHeaders = headers
//
// // サーバー送信
// let session = URLSession(configuration: urlConfig)
// session.uploadTask(with: req, from: postdata, completionHandler: {(data, response, error) in
do{ do{
if error != nil{ if error != nil{
...@@ -101,6 +108,8 @@ class ServerSession{ ...@@ -101,6 +108,8 @@ class ServerSession{
throw APIError.responseError throw APIError.responseError
} }
if inresponse.statusCode != 200 { if inresponse.statusCode != 200 {
let statusCode = inresponse.statusCode
print(debug: "serverError: \(statusCode)")
throw APIError.serverError throw APIError.serverError
} }
//Cookieを保存 //Cookieを保存
...@@ -120,7 +129,7 @@ class ServerSession{ ...@@ -120,7 +129,7 @@ class ServerSession{
completion(.failure(.unknown)) completion(.failure(.unknown))
} }
} }
}).resume() }.resume()
} }
func getJson(_ req_url : URL, completion: @escaping (SessionResponse) -> Void){ func getJson(_ req_url : URL, completion: @escaping (SessionResponse) -> Void){
......
...@@ -33,13 +33,52 @@ class SessionUploadImage : ObservableObject { ...@@ -33,13 +33,52 @@ class SessionUploadImage : ObservableObject {
return return
} }
let boundary = "----------" + uploadImage.messageId let imageFileName = "itemp.jpg"
if let postdata = serverSession.httpBody(boundary: boundary, uploadImage) { let boundary = "----------\(UUID().uuidString)"
serverSession.postForm(boundary: boundary, req_url, postdata, completion: completion)
} var httpBody1 = "--\(boundary)\r\n"
else { httpBody1 += "Content-Disposition: form-data; name=\"ShipId\"\r\n"
Calling = false httpBody1 += "\r\n"
return httpBody1 += "\(uploadImage.shipId)\r\n"
} httpBody1 += "--\(boundary)\r\n"
httpBody1 += "Content-Disposition: form-data; name=\"MessageId\"\r\n"
httpBody1 += "\r\n"
httpBody1 += "\(uploadImage.messageId)\r\n"
httpBody1 += "--\(boundary)\r\n"
httpBody1 += "Content-Disposition: form-data; name=\"Location\"\r\n"
httpBody1 += "\r\n"
httpBody1 += "\(String(uploadImage.location))\r\n"
httpBody1 += "--\(boundary)\r\n"
httpBody1 += "Content-Disposition: form-data; name=\"From\"\r\n"
httpBody1 += "\r\n"
httpBody1 += "\(uploadImage.from)\r\n"
httpBody1 += "--\(boundary)\r\n"
httpBody1 += "Content-Disposition: form-data; name=\"FromId\"\r\n"
httpBody1 += "\r\n"
httpBody1 += "\(uploadImage.fromId)\r\n"
httpBody1 += "--\(boundary)\r\n"
httpBody1 += "Content-Disposition: form-data; name=\"files\"; filename=\"\(imageFileName)\"\r\n"
httpBody1 += "Content-Type: image/jpeg\r\n"
httpBody1 += "\r\n"
var httpBody = Data()
httpBody.append(httpBody1.data(using: .utf8)!)
httpBody.append(uploadImage.files)
var httpBody2 = "\r\n"
httpBody2 += "--\(boundary)--\r\n"
httpBody.append(httpBody2.data(using: .utf8)!)
// let str: String = String(decoding: httpBody, as: UTF8.self)
serverSession.postForm(boundary: boundary, req_url, httpBody, completion: completion)
// if let postdata = serverSession.httpBody(boundary: boundary, uploadImage) {
// serverSession.postForm(boundary: boundary, req_url, postdata, completion: completion)
// }
// else {
// Calling = false
// return
// }
} }
} }
...@@ -134,26 +134,34 @@ class SharingData{ ...@@ -134,26 +134,34 @@ class SharingData{
switch type { switch type {
case EcaOperation.Running: case EcaOperation.Running:
task.id = UUID().uuidString
task.areaId = value.areaId task.areaId = value.areaId
task.userName = Preferences.UserName
task.taskName = value.name task.taskName = value.name
task.noticeRange = value.swNotice task.noticeRange = value.swNotice
task.startRange = value.swStart task.startRange = value.swStart
task.finishRange = value.swFinish task.finishRange = value.swFinish
task.status = serverRunning task.status = serverRunning
task.lastUpdateTime = DateTextLib.Date2BCDText(Date())
setEcaArea.start(eca: task) setEcaArea.start(eca: task)
case EcaOperation.Insert: case EcaOperation.Insert:
task.id = UUID().uuidString
task.areaId = value.areaId task.areaId = value.areaId
task.userName = Preferences.UserName
task.taskName = value.name task.taskName = value.name
task.noticeRange = value.swNotice task.noticeRange = value.swNotice
task.startRange = value.swStart task.startRange = value.swStart
task.finishRange = value.swFinish task.finishRange = value.swFinish
task.status = serverRegister task.status = serverRegister
task.lastUpdateTime = DateTextLib.Date2BCDText(Date())
setEcaArea.start(eca: task) setEcaArea.start(eca: task)
case EcaOperation.Delete: case EcaOperation.Delete:
let deleteEcaArea = DeleteEcaArea() let deleteEcaArea = DeleteEcaArea()
deleteEcaArea.start(ecaId: value.areaId) deleteEcaArea.start(ecaId: value.areaId)
case EcaOperation.Notice: case EcaOperation.Notice:
task.id = value.id
task.areaId = value.areaId task.areaId = value.areaId
task.userName = value.userName
task.taskName = value.name task.taskName = value.name
task.noticeRange = value.swNotice task.noticeRange = value.swNotice
task.startRange = value.swStart task.startRange = value.swStart
...@@ -161,9 +169,12 @@ class SharingData{ ...@@ -161,9 +169,12 @@ class SharingData{
if value.isEnable && value.isRunning { if value.isEnable && value.isRunning {
task.status = setEcaStatus(eca: value) task.status = setEcaStatus(eca: value)
} }
task.lastUpdateTime = DateTextLib.Date2BCDText(Date())
setEcaArea.start(eca: task) setEcaArea.start(eca: task)
case EcaOperation.Start: case EcaOperation.Start:
task.id = value.id
task.areaId = value.areaId task.areaId = value.areaId
task.userName = value.userName
task.taskName = value.name task.taskName = value.name
task.noticeRange = value.swNotice task.noticeRange = value.swNotice
task.startRange = value.swStart task.startRange = value.swStart
...@@ -171,9 +182,12 @@ class SharingData{ ...@@ -171,9 +182,12 @@ class SharingData{
if value.isEnable && value.isRunning { if value.isEnable && value.isRunning {
task.status = setEcaStatus(eca: value) task.status = setEcaStatus(eca: value)
} }
task.lastUpdateTime = DateTextLib.Date2BCDText(Date())
setEcaArea.start(eca: task) setEcaArea.start(eca: task)
case EcaOperation.Finish: case EcaOperation.Finish:
task.id = value.id
task.areaId = value.areaId task.areaId = value.areaId
task.userName = value.userName
task.taskName = value.name task.taskName = value.name
task.noticeRange = value.swNotice task.noticeRange = value.swNotice
task.startRange = value.swStart task.startRange = value.swStart
...@@ -181,9 +195,12 @@ class SharingData{ ...@@ -181,9 +195,12 @@ class SharingData{
if value.isEnable { if value.isEnable {
task.status = setEcaStatus(eca: value) task.status = setEcaStatus(eca: value)
} }
task.lastUpdateTime = DateTextLib.Date2BCDText(Date())
setEcaArea.start(eca: task) setEcaArea.start(eca: task)
case EcaOperation.End: case EcaOperation.End:
task.id = value.id
task.areaId = value.areaId task.areaId = value.areaId
task.userName = value.userName
task.taskName = value.name task.taskName = value.name
task.noticeRange = value.swNotice task.noticeRange = value.swNotice
task.startRange = value.swStart task.startRange = value.swStart
...@@ -191,9 +208,12 @@ class SharingData{ ...@@ -191,9 +208,12 @@ class SharingData{
if value.isEnable { if value.isEnable {
task.status = setEcaStatus(eca: value) task.status = setEcaStatus(eca: value)
} }
task.lastUpdateTime = DateTextLib.Date2BCDText(Date())
setEcaArea.start(eca: task) setEcaArea.start(eca: task)
case EcaOperation.Incomplete: case EcaOperation.Incomplete:
task.id = value.id
task.areaId = value.areaId task.areaId = value.areaId
task.userName = value.userName
task.taskName = value.name task.taskName = value.name
task.noticeRange = value.swNotice task.noticeRange = value.swNotice
task.startRange = value.swStart task.startRange = value.swStart
...@@ -201,9 +221,12 @@ class SharingData{ ...@@ -201,9 +221,12 @@ class SharingData{
if value.isEnable { if value.isEnable {
task.status = setEcaStatus(eca: value) task.status = setEcaStatus(eca: value)
} }
task.lastUpdateTime = DateTextLib.Date2BCDText(Date())
setEcaArea.start(eca: task) setEcaArea.start(eca: task)
case EcaOperation.Cancel: case EcaOperation.Cancel:
task.id = value.id
task.areaId = value.areaId task.areaId = value.areaId
task.userName = value.userName
task.taskName = value.name task.taskName = value.name
task.noticeRange = value.swNotice task.noticeRange = value.swNotice
task.startRange = value.swStart task.startRange = value.swStart
...@@ -211,9 +234,12 @@ class SharingData{ ...@@ -211,9 +234,12 @@ class SharingData{
if value.isEnable { if value.isEnable {
task.status = setEcaStatus(eca: value) task.status = setEcaStatus(eca: value)
} }
task.lastUpdateTime = DateTextLib.Date2BCDText(Date())
setEcaArea.start(eca: task) setEcaArea.start(eca: task)
case EcaOperation.Change: case EcaOperation.Change:
task.id = value.id
task.areaId = value.areaId task.areaId = value.areaId
task.userName = value.userName
task.taskName = value.name task.taskName = value.name
task.noticeRange = value.swNotice task.noticeRange = value.swNotice
task.startRange = value.swStart task.startRange = value.swStart
...@@ -221,6 +247,7 @@ class SharingData{ ...@@ -221,6 +247,7 @@ class SharingData{
if value.isEnable && value.isRunning { if value.isEnable && value.isRunning {
task.status = setEcaStatus(eca: value) task.status = setEcaStatus(eca: value)
} }
task.lastUpdateTime = DateTextLib.Date2BCDText(Date())
setEcaArea.start(eca: task) setEcaArea.start(eca: task)
} }
ecaArea.updateValue(value, forKey: key) ecaArea.updateValue(value, forKey: key)
...@@ -276,6 +303,7 @@ class SharingData{ ...@@ -276,6 +303,7 @@ class SharingData{
switch type { switch type {
case NgaOperation.Change: case NgaOperation.Change:
task.id = value.areaId.uuidString task.id = value.areaId.uuidString
task.name = value.name
task.enabled = value.isRunning task.enabled = value.isRunning
task.lock = value.isLock task.lock = value.isLock
for point in value.points { for point in value.points {
...@@ -292,6 +320,7 @@ class SharingData{ ...@@ -292,6 +320,7 @@ class SharingData{
break break
case NgaOperation.Running: case NgaOperation.Running:
task.id = value.areaId.uuidString task.id = value.areaId.uuidString
task.name = value.name
task.enabled = value.isRunning task.enabled = value.isRunning
task.lock = value.isLock task.lock = value.isLock
for point in value.points { for point in value.points {
...@@ -306,6 +335,7 @@ class SharingData{ ...@@ -306,6 +335,7 @@ class SharingData{
break break
case NgaOperation.Cancel: case NgaOperation.Cancel:
task.id = value.areaId.uuidString task.id = value.areaId.uuidString
task.name = value.name
task.enabled = value.isRunning task.enabled = value.isRunning
task.lock = value.isLock task.lock = value.isLock
for point in value.points { for point in value.points {
......
...@@ -10,7 +10,7 @@ import Foundation ...@@ -10,7 +10,7 @@ import Foundation
enum EcaOperation { enum EcaOperation {
case Insert case Insert
case Delete case Delete
case Running case Running //ECA開始
case Notice case Notice
case Start case Start
case Finish case Finish
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment