diff --git a/pom.xml b/pom.xml index ef6ecdf..f791c3a 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ osm.surveyor.plateau task-bldg - 0.1.16 + 0.1.17 war task-bldg TaskingManager for Plateau BLDG diff --git a/src/main/java/osm/surveyor/task/city/CityService.java b/src/main/java/osm/surveyor/task/city/CityService.java new file mode 100644 index 0000000..c82e1e6 --- /dev/null +++ b/src/main/java/osm/surveyor/task/city/CityService.java @@ -0,0 +1,96 @@ +package osm.surveyor.task.city; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import osm.surveyor.task.city.model.City; +import osm.surveyor.task.city.model.Citymesh; +import osm.surveyor.task.city.model.Status; + +@Service +@Transactional // メソッド開始時にトランザクションを開始、終了時にコミットする +public class CityService { + + @Autowired + CityRepository repository; + + @Autowired + CitymeshRepository meshRepository; + + public List getAll() { + return repository.findAll(Sort.by(Sort.Direction.ASC, "citycode")); + } + + /** + * ステータスを更新 + * @param task + */ + public void updateStatus(String citycode) { + List list = meshRepository.findByCitycode(citycode); + double cnt = 0; + double err = 0; + double edit = 0; + double resv = 0; + double total = list.size(); + for (Citymesh mesh : list) { + Status status = mesh.getStatus(); + switch (status) { + case OK: + cnt++; + break; + case NG: + err++; + break; + case EDITING: + edit++; + break; + case RESERVED: + resv++; + break; + case ACCEPTING: + resv++; + break; + default: + break; + } + } + + City city = getCity(citycode); + if (err > 0) { + city.setStatus(Status.NG); + } + else if ((cnt / total) > 0.99d) { + city.setStatus(Status.OK); + } + else if ((cnt / total) > 0.9d) { + city.setStatus(Status.EDITING); + } + else if (edit > 0d) { + city.setStatus(Status.RESERVED); + } + else if (resv > 0d) { + city.setStatus(Status.ACCEPTING); + } + else { + city.setStatus(Status.PREPARATION); + } + repository.save(city); + } + + public void store(City city) { + repository.save(city); + } + + public City getCity(String citycode) { + return repository.findByCitycode(citycode); + } + + public void deleteCity(String citycode) { + repository.deleteByCitycode(citycode); + } + +} diff --git a/src/main/java/osm/surveyor/task/city/DataLoader.java b/src/main/java/osm/surveyor/task/city/DataLoader.java index ecc741f..c3ba91b 100644 --- a/src/main/java/osm/surveyor/task/city/DataLoader.java +++ b/src/main/java/osm/surveyor/task/city/DataLoader.java @@ -32,6 +32,7 @@ private final CityRepository cityRepository; private final CitymeshRepository meshRepository; private final TaskService taskService; + private final CityService cityService; String url = "http://surveyor.mydns.jp/osm-data"; @@ -59,6 +60,7 @@ cityRepository.save(city); storeTask(city); + cityService.updateStatus(city.getCitycode()); } } diff --git a/src/main/java/osm/surveyor/task/city/TaskController.java b/src/main/java/osm/surveyor/task/city/TaskController.java index 73b88e1..d0fe3ea 100644 --- a/src/main/java/osm/surveyor/task/city/TaskController.java +++ b/src/main/java/osm/surveyor/task/city/TaskController.java @@ -40,6 +40,9 @@ @Autowired private TaskService service; + @Autowired + private CityService cityService; + /** * ログインユーザーが関係しているTASKリスト * @param model @@ -99,7 +102,7 @@ { String next = "task"; Operation operation = Operation.NOP; - Status nextStatus = Status.PREPARATION; + Status nextStatus = Status.ACCEPTING; if (op.equals(Operation.RESERVE.toString())) { model.addAttribute("command", "編集者登録"); operation = Operation.RESERVE; @@ -165,6 +168,7 @@ return nextPage(task); } service.add(task); + cityService.updateStatus(task.getCitycode()); return "redirect:/tasks?citycode="+ task.getCitycode() +"&meshcode="+ task.getMeshcode(); } diff --git a/src/main/java/osm/surveyor/task/city/TaskService.java b/src/main/java/osm/surveyor/task/city/TaskService.java index 422683a..34bcf13 100644 --- a/src/main/java/osm/surveyor/task/city/TaskService.java +++ b/src/main/java/osm/surveyor/task/city/TaskService.java @@ -30,7 +30,7 @@ task.setStatus(Status.RESERVED); } else if (task.getOperation() == Operation.CANCEL) { - task.setStatus(Status.ACCEPTING); + task.setStatus(Status.PREPARATION); } else if (task.getOperation() == Operation.NG) { task.setStatus(Status.NG); diff --git a/src/main/resources/static/img/EDITING.png b/src/main/resources/static/img/EDITING.png new file mode 100644 index 0000000..613b279 --- /dev/null +++ b/src/main/resources/static/img/EDITING.png Binary files differ diff --git a/src/main/resources/static/img/IMPORTED.png b/src/main/resources/static/img/IMPORTED.png deleted file mode 100644 index 613b279..0000000 --- a/src/main/resources/static/img/IMPORTED.png +++ /dev/null Binary files differ diff --git a/src/main/resources/templates/cities.html b/src/main/resources/templates/cities.html index 61c3244..c5db8fd 100644 --- a/src/main/resources/templates/cities.html +++ b/src/main/resources/templates/cities.html @@ -136,6 +136,11 @@ + + + diff --git a/src/main/resources/templates/meshes.html b/src/main/resources/templates/meshes.html index 7adea02..9707c89 100644 --- a/src/main/resources/templates/meshes.html +++ b/src/main/resources/templates/meshes.html @@ -49,7 +49,7 @@ }); var status4 = new ol.style.Style({ image: new ol.style.Icon({ - src: '/task-bldg/img/EDITING.png', + src: '/task-bldg/img/IMPORTED.png', anchor: [0.5, 0.5], scale: 1 }) @@ -245,6 +245,9 @@ +
+ :エラーあり :完了 :あとちょっと :編集中 :着手 :未着手 +
+ :エラー :完了 :編集中 :予約済み :受付中 :未着手 +
diff --git a/src/main/resources/templates/tasks.html b/src/main/resources/templates/tasks.html index 3a4216a..3fcecda 100644 --- a/src/main/resources/templates/tasks.html +++ b/src/main/resources/templates/tasks.html @@ -86,7 +86,7 @@ }); var status4 = new ol.style.Style({ image: new ol.style.Icon({ - src: './img/EDITING.png', + src: './img/IMPORTED.png', anchor: [0.5, 0.5], scale: 2 })