123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433 |
- package com.steerinfo.dil.controller;
- import com.steerinfo.dil.model.TmsshipControlLine;
- import com.steerinfo.dil.service.impl.ShipDynamicsServiceImpl;
- import com.steerinfo.dil.util.BaseRESTfulController;
- import com.steerinfo.framework.controller.RESTfulResult;
- import io.swagger.annotations.ApiOperation;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import java.math.BigDecimal;
- import java.text.SimpleDateFormat;
- import java.util.*;
- @RestController
- @RequestMapping("/${api.version}/shipdynamics")
- public class ShipDynamicsController extends BaseRESTfulController {
- @Autowired
- ShipDynamicsServiceImpl iShipDynamicsService;
- @ApiOperation(value="查询所有的船舶动态信息")
- @PostMapping("/selectAllShipDynamaics")
- public RESTfulResult selectAllShipDynamaics(@RequestBody(required = false)Map<String,Object> mapVal,
- String con) {
- //返回值mapList
- //获取视图里的所有外轮船名,物资名称
- if (con!=null&&!"null".equals(con)){
- mapVal.put("con",con);
- }
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date oneDate=new Date();
- int hour=oneDate.getHours();
- if(hour >= 8 && hour < 18){
- //当天8-18
- oneDate.setHours(8);
- }else{
- if(hour >= 0 ){
- //第二天8点前,日期减一
- Calendar calendar=Calendar.getInstance();
- calendar.setTime(oneDate);
- calendar.add(Calendar.DATE, -1);
- }
- //当天18点后
- oneDate.setHours(18);
- }
- oneDate.setMinutes(0);
- oneDate.setSeconds(0);
- mapVal.put("oneDate",sdf.format(oneDate));
- List<Map<String, Object>> list = iShipDynamicsService.selectAll(mapVal);
- if (list.size()==0){
- // System.out.println("暂时没有位置作业");
- return failed("暂时没有船舶动态");
- }
- List<Map<String, Object>> mapList=new ArrayList<>(list.size());
- //小计,每一个批次进行完小计后清空
- Double capacityNumberSum1 = 0.0;
- Double capacityNumberSum2 = 0.0;
- Double capacityNumberSum3 = 0.0;
- Double capacityNumberSum4 = 0.0;
- Double materialSum1=0.0;
- //获取下游港口吨位的总和
- Double tonnageSum=0.0;
- //1:未到闸船舶2:等闸船舶3:已过闸船舶4:到港待卸船舶的和
- Double capacityNumberAllSum1=0.0;
- Double capacityNumberAllSum2=0.0;
- Double capacityNumberAllSum3=0.0;
- Double capacityNumberAllSum4=0.0;
- //物资大类小计,每一个批次进行完小计后清空
- // 1:未到闸船舶2:等闸船舶3:已过闸船舶4:到港待卸船舶的和
- Double materialNumberSum1 = 0.0;
- Double materialNumberSum2 = 0.0;
- Double materialNumberSum3 = 0.0;
- Double materialNumberSum4 = 0.0;
- //物资大类下游港口吨位的求和
- Double materialTonnageSum=0.0;
- //物资总小计
- Double materialNumberAllSum=0.0;
- for (int i = 0; i <= list.size()-1; i++) {
- //处理船舶合计
- if(i>0&&!list.get(i).get("batchInfacoryId").equals(list.get(i-1).get("batchInfacoryId"))){
- Map<String,Object> map=new LinkedHashMap<>();
- map.put("batchInfacoryId",list.get(i-1).get("batchInfacoryId"));
- map.put("batchId",list.get(i-1).get("batchId"));
- map.put("materialType",list.get(i-1).get("materialTypeName"));
- map.put("materialName",list.get(i-1).get("materialName"));
- map.put("pm",list.get(i).get("materialName").toString() +"\n\n\n\n\n"+
- "\""+list.get(i).get("shipName").toString()+"\""+"\n\n\n\n\n"+
- list.get(i).get("dateOfLoans").toString().substring(0, 10)+"\n\n\n\n\n"+"放"+
- list.get(i).get("numberOfLoans").toString()+"吨");
- if (list.get(i-1).get("instructionStatus")!=null){
- map.put("tonnage1",list.get(i-1).get("tonnage"));
- }else {
- map.put("tonnage", list.get(i - 1).get("tonnage"));
- }
- map.put("portName", list.get(i-1).get("portName"));
- map.put("materialType",list.get(i-1).get("materialTypeName"));
- //tonnageSum+=Double.parseDouble(list.get(i-1).get("tonnage").toString());
- map.put("capacity1","小计");
- map.put("capacity2","小计");
- map.put("capacity3" ,"小计");
- map.put("capacity4","小计");
- map.put("capacityNumber1",capacityNumberSum1);
- map.put("capacityNumber2",capacityNumberSum2);
- map.put("capacityNumber3",capacityNumberSum3);
- map.put("capacityNumber4",capacityNumberSum4);
- map.put("vvvvv", 23);
- mapList.add(map);
- Map<String,Object> map2=new HashMap<>();
- map2.put("batchInfacoryId",list.get(i-1).get("batchInfacoryId"));
- map2.put("batchId",list.get(i-1).get("batchId"));
- map2.put("pm",list.get(i-1).get("shipName").toString()+
- list.get(i-1).get("materialName").toString()+
- list.get(i-1).get("dateOfLoans").toString().substring(0, 10)+"放货"+
- list.get(i-1).get("numberOfLoans").toString());
- map2.put("tonnage",list.get(i-1).get("tonnage"));
- map2.put("materialType",list.get(i-1).get("materialTypeName"));
- map2.put("portName", list.get(i-1).get("portName"));
- map2.put("capacity1", new BigDecimal(capacityNumberSum1+capacityNumberSum2+capacityNumberSum3+capacityNumberSum4).setScale(2,BigDecimal.ROUND_HALF_UP));
- map2.put("type",1);
- map2.put("aaaaa", 2);
- mapList.add(map2);
- capacityNumberSum1 = 0.0;
- capacityNumberSum2 = 0.0;
- capacityNumberSum3 = 0.0;
- capacityNumberSum4 = 0.0;
- }
- //处理物资合计
- if(i>0&&!list.get(i).get("materialTypeName").equals(list.get(i-1).get("materialTypeName"))){
- //如果和上一个物资名不一样,则统计清零
- //四小合计
- Map<String,Object> map=new LinkedHashMap<>();
- map.put("materialType",list.get(i-1).get("materialTypeName"));
- map.put("batchInfacoryId","不合并第二行");
- map.put("batchId",list.get(i-1).get("batchId"));
- map.put("pm","物资合计");
- map.put("tonnage",materialTonnageSum);
- map.put("capacity1","物资小计");
- map.put("capacity2","物资小计");
- map.put("capacity3" ,"物资小计");
- map.put("capacity4","物资小计");
- map.put("capacityNumber1",materialNumberSum1);
- map.put("capacityNumber2",materialNumberSum2);
- map.put("capacityNumber3",materialNumberSum3);
- map.put("capacityNumber4",materialNumberSum4);
- mapList.add(map);
- //总合计
- Map<String,Object> map2=new HashMap<>();
- map2.put("materialType",list.get(i-1).get("materialTypeName"));
- map2.put("batchInfacoryId","不合并第二行");
- map2.put("pm","物资合计");
- map2.put("tonnage",materialTonnageSum);
- map2.put("batchId",list.get(i-1).get("batchId"));
- map2.put("capacity1", list.get(i-1).get("materialTypeName") + ":" +
- new BigDecimal(materialNumberSum1+materialNumberSum2+materialNumberSum3+materialNumberSum4).setScale(2,BigDecimal.ROUND_HALF_UP));
- map2.put("type",1);
- map2.put("aaaaa", 2);
- mapList.add(map2);
- materialNumberSum1 = 0.0;
- materialNumberSum2 = 0.0;
- materialNumberSum3 = 0.0;
- materialNumberSum4 = 0.0;
- materialTonnageSum=0.0;
- materialNumberAllSum=0.0;
- }
- //处理下游港口合计
- if(i==0 || !list.get(i).get("batchId").equals(list.get(i-1).get("batchId")) || !list.get(i).get("portName").equals(list.get(i-1).get("portName"))){
- //物资大类的下游港口总和
- materialTonnageSum=new BigDecimal(materialTonnageSum+Double.valueOf(list.get(i).get("tonnage").toString())).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- //所有下游港口吨位总和
- tonnageSum+=Double.parseDouble(list.get(i).get("tonnage").toString());
- }
- Map<String, Object> map = new HashMap<>();
- map.put("batchInfacoryId",list.get(i).get("batchInfacoryId"));
- map.put("batchId",list.get(i).get("batchId"));
- list.get(i).get("shipName").toString();
- list.get(i).get("materialName").toString();
- list.get(i).get("dateOfLoans").toString().substring(0, 10);
- list.get(i).get("numberOfLoans").toString();
- String pm= list.get(i).get("materialName").toString() +"\n\n\n\n\n"+
- "\""+list.get(i).get("shipName").toString()+"\""+"\n\n\n\n\n"+
- list.get(i).get("dateOfLoans").toString().substring(0, 10)+"\n\n\n\n\n"+"放"+
- list.get(i).get("numberOfLoans").toString()+"吨";
- if (list.get(i).get("instructionStatus")!=null){
- map.put("tonnage1", list.get(i).get("tonnage"));
- }else {
- map.put("tonnage", list.get(i).get("tonnage"));
- }
- map.put("pm",pm);
- map.put("materialType",list.get(i).get("materialTypeName"));
- //1:未到闸船舶2:等闸船舶3:已过闸船舶4:到港待卸船舶
- String capacity1=null;
- String capacity2=null;
- String capacity3=null;
- String capacity4=null;
- String capacityNumber1=null;
- String capacityNumber2=null;
- String capacityNumber3=null;
- String capacityNumber4=null;
- String outPortTime1=null;
- String outPortTime2=null;
- String outPortTime3=null;
- String outPortTime4=null;
- String locationValue1=null;
- String locationValue2=null;
- String locationValue3=null;
- String locationValue4=null;
- String dgsj=null;
- String locationStatus = list.get(i).get("locationStatus").toString();
- //物资大类总小计
- materialNumberAllSum=new BigDecimal(materialNumberAllSum+Double.valueOf(list.get(i).get("capacityNumber").toString())).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- if ("未到闸船舶".equals(locationStatus)) {
- capacity1 = list.get(i).get("capacity").toString();
- capacityNumber1 = list.get(i).get("capacityNumber").toString();
- outPortTime1 = list.get(i).get("outPortTime").toString().substring(0, 10);
- locationValue1 = list.get(i).get("locationValue").toString();
- capacityNumberSum1 += Double.valueOf(capacityNumber1);
- capacityNumberAllSum1+=Double.valueOf(capacityNumber1);
- capacityNumberSum1 = new BigDecimal(capacityNumberSum1).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- capacityNumberAllSum1 = new BigDecimal(capacityNumberAllSum1).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- //物资分类
- materialNumberSum1 = new BigDecimal(materialNumberSum1+Double.valueOf(capacityNumber1)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- } else if ("等闸船舶".equals(locationStatus)) {
- capacity2 = list.get(i).get("capacity").toString();
- capacityNumber2 = list.get(i).get("capacityNumber").toString();
- outPortTime2 = list.get(i).get("outPortTime").toString().substring(0, 10);
- locationValue2 = list.get(i).get("locationValue").toString();
- capacityNumberSum2 += Double.valueOf(capacityNumber2);
- capacityNumberAllSum2+=Double.valueOf(capacityNumber2);
- capacityNumberSum2 = new BigDecimal(capacityNumberSum2).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- capacityNumberAllSum2 = new BigDecimal(capacityNumberAllSum2).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- //物资分类
- materialNumberSum2 = new BigDecimal(materialNumberSum2+Double.valueOf(capacityNumber2)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- } else if ("已过闸船舶".equals(locationStatus)) {
- capacity3 = list.get(i).get("capacity").toString();
- capacityNumber3 = list.get(i).get("capacityNumber").toString();
- outPortTime3 = list.get(i).get("outPortTime").toString().substring(0, 10);
- locationValue3 = list.get(i).get("locationValue").toString();
- capacityNumberSum3 += Double.valueOf(capacityNumber3);
- capacityNumberAllSum3+=Double.valueOf(capacityNumber3);
- capacityNumberSum3 = new BigDecimal(capacityNumberSum3).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- capacityNumberAllSum3 = new BigDecimal(capacityNumberAllSum3).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- //物资分类
- materialNumberSum3 = new BigDecimal(materialNumberSum3+Double.valueOf(capacityNumber3)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- } else if ("到港待卸船舶".equals(locationStatus)) {
- capacity4 = list.get(i).get("capacity").toString();
- capacityNumber4 = list.get(i).get("capacityNumber").toString();
- outPortTime4 = list.get(i).get("outPortTime").toString().substring(0, 10);
- locationValue4 = list.get(i).get("locationValue").toString();
- dgsj=list.get(i).get("dgsj").toString();
- capacityNumberSum4 += Double.valueOf(capacityNumber4);
- capacityNumberAllSum4+=Double.valueOf(capacityNumber4);
- capacityNumberSum4 = new BigDecimal(capacityNumberSum4).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- capacityNumberAllSum4 = new BigDecimal(capacityNumberAllSum4).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- //物资分类
- materialNumberSum4 = new BigDecimal(materialNumberSum4+Double.valueOf(capacityNumber4)).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
- }
- map.put("capacity1",capacity1);
- map.put("capacityNumber1",capacityNumber1);
- map.put("locationValue1",locationValue1);
- map.put("outPortTime1",outPortTime1);
- map.put("capacity2",capacity2);
- map.put("capacityNumber2",capacityNumber2);
- map.put("locationValue2",locationValue2);
- map.put("outPortTime2",outPortTime2);
- map.put("capacity3",capacity3);
- map.put("capacityNumber3",capacityNumber3);
- map.put("locationValue3",locationValue3);
- map.put("outPortTime3",outPortTime3);
- map.put("capacity4",capacity4);
- map.put("capacityNumber4",capacityNumber4);
- map.put("locationValue4",locationValue4);
- map.put("outPortTime4",outPortTime4);
- map.put("dgsj",dgsj);
- map.put("qqqqq", 12); //连续字母用于辨识数据结构!!!!
- map.put("portName", list.get(i).get("portName"));
- mapList.add(map);
- }
- //船舶合计处理最后一行
- Map<String,Object> map=new HashMap<>();
- map.put("batchInfacoryId",list.get(list.size() - 1).get("batchInfacoryId"));
- map.put("batchId",list.get(list.size() -1 ).get("batchId"));
- map.put("materialType",list.get(list.size()-1).get("materialTypeName"));
- map.put("materialName",list.get(list.size()-1).get("materialName"));
- map.put("pm",list.get(list.size()-1).get("shipName").toString()+
- list.get(list.size()-1).get("materialName").toString()+
- list.get(list.size()-1).get("dateOfLoans").toString().substring(0, 10)+"放货"+
- list.get(list.size()-1).get("numberOfLoans").toString());
- map.put("tonnage",list.get(list.size()-1).get("tonnage"));
- map.put("portName", list.get(list.size()-1).get("portName"));
- //tonnageSum+=Double.parseDouble(list.get(list.size()-1).get("tonnage").toString());
- map.put("capacity1","小计");
- map.put("capacity2","小计");
- map.put("capacity3","小计");
- map.put("capacity4","小计");
- map.put("capacityNumber1",capacityNumberSum1);
- map.put("capacityNumber2",capacityNumberSum2);
- map.put("capacityNumber3",capacityNumberSum3);
- map.put("capacityNumber4",capacityNumberSum4);
- map.put("wwwww", 12);
- mapList.add(map);
- Map<String,Object> map2=new HashMap<>();
- map2.put("batchInfacoryId",list.get(list.size() - 1).get("batchInfacoryId"));
- map2.put("batchId",list.get(list.size()-1).get("batchId"));
- map2.put("pm",list.get(list.size()-1).get("shipName").toString()+
- list.get(list.size()-1).get("materialName").toString()+
- list.get(list.size()-1).get("dateOfLoans").toString().substring(0, 10)+"放货"+
- list.get(list.size()-1).get("numberOfLoans").toString());
- map2.put("materialName",list.get(list.size()-1).get("materialName"));
- map2.put("materialType",list.get(list.size()-1).get("materialTypeName"));
- if (list.get(list.size()-1).get("instructionStatus")!=null){
- map2.put("tonnage1",list.get(list.size()-1).get("tonnage"));
- }else {
- map2.put("tonnage",list.get(list.size()-1).get("tonnage"));
- }
- map2.put("portName", list.get(list.size()-1).get("portName"));
- map2.put("capacity1",new BigDecimal(capacityNumberSum1+capacityNumberSum2+capacityNumberSum3+capacityNumberSum4).setScale(2,BigDecimal.ROUND_HALF_UP));
- map2.put("type",1);
- map2.put("eeeeee", 12);
- mapList.add(map2);
- //物资合计处理最后一行
- //四小合计
- Map<String,Object> map11=new LinkedHashMap<>();
- map11.put("materialType",list.get(list.size() - 1).get("materialTypeName"));
- map11.put("batchInfacoryId","不合并第二行");
- map11.put("pm","物资合计");
- map11.put("tonnage",materialTonnageSum);
- map11.put("batchId",list.get(list.size() -1).get("batchId"));
- map11.put("capacity1","物资小计");
- map11.put("capacity2","物资小计");
- map11.put("capacity3" ,"物资小计");
- map11.put("capacity4","物资小计");
- map11.put("capacityNumber1",materialNumberSum1);
- map11.put("capacityNumber2",materialNumberSum2);
- map11.put("capacityNumber3",materialNumberSum3);
- map11.put("capacityNumber4",materialNumberSum4);
- mapList.add(map11);
- //总合计
- Map<String,Object> map22=new HashMap<>();
- map22.put("materialType",list.get(list.size() -1).get("materialTypeName"));
- map22.put("batchInfacoryId","不合并第二行");
- map22.put("pm","物资合计");
- map22.put("tonnage",materialTonnageSum);
- map22.put("batchId",list.get(list.size() -1).get("batchId"));
- map22.put("capacity1", list.get(list.size() -1).get("materialTypeName") + ":" +
- new BigDecimal(materialNumberSum1+materialNumberSum2+materialNumberSum3+materialNumberSum4).setScale(2,BigDecimal.ROUND_HALF_UP));
- map22.put("type",1);
- map22.put("aaaaa", 2);
- mapList.add(map22);
- //最下方的两行
- //第一行
- Map<String,Object> map3=new HashMap<>();
- map3.put("batchInfacoryId",Integer.parseInt(list.get(list.size() -1).get("batchInfacoryId").toString()) + 1);
- map3.put("batchId",Integer.parseInt(list.get(list.size()-1).get("batchId").toString())+1);
- //下游吨位总合计
- if (list.get(list.size()-1).get("instructionStatus")!=null) {
- map3.put("tonnage1",new BigDecimal(tonnageSum).setScale(2,BigDecimal.ROUND_HALF_UP));
- }else {
- map3.put("tonnage",new BigDecimal(tonnageSum).setScale(2,BigDecimal.ROUND_HALF_UP));
- }
- map3.put("pm","合计");
- map3.put("capacityNumber1",capacityNumberAllSum1);
- map3.put("capacityNumber2",capacityNumberAllSum2);
- map3.put("capacityNumber3",capacityNumberAllSum3);
- map3.put("capacityNumber4",capacityNumberAllSum4);
- map3.put("rrrrrr", 12);
- mapList.add(map3);
- //第二行
- Map<String,Object> map4=new HashMap<>();
- map3.put("batchInfacoryId",Integer.parseInt(list.get(list.size() -1).get("batchInfacoryId").toString()) + 1);
- map4.put("batchId",Integer.parseInt(list.get(list.size()-1).get("batchId").toString())+1);
- //下游吨位总合计
- if (list.get(list.size()-1).get("instructionStatus")!=null) {
- map4.put("tonnage1",new BigDecimal(tonnageSum).setScale(2,BigDecimal.ROUND_HALF_UP));
- }else {
- map4.put("tonnage",new BigDecimal(tonnageSum).setScale(2,BigDecimal.ROUND_HALF_UP));
- }
- map4.put("pm","合计");
- map4.put("capacity1",new BigDecimal(capacityNumberAllSum1+capacityNumberAllSum2+capacityNumberAllSum3+capacityNumberAllSum4).setScale(2,BigDecimal.ROUND_HALF_UP));
- map4.put("type",1);
- map4.put("ttttt", 2);
- mapList.add(map4);
- return success(mapList);
- }
- @ApiOperation(value="万州港装车出库数据")
- @PostMapping("/getLoadData")
- public RESTfulResult getLoadData(@RequestBody(required = false)Map<String,Object> mapVal){
- return success(iShipDynamicsService.getLoadData(mapVal));
- }
- @ApiOperation(value="万州港装车出库数据")
- @PostMapping("/getUnloadData")
- public RESTfulResult getUnloadData(@RequestBody(required = false)Map<String,Object> mapVal){
- return success(iShipDynamicsService.getUnloadData(mapVal));
- }
- @ApiOperation(value="下游港口船舶动态表")
- @PostMapping("/getDownShipDynamaics")
- public RESTfulResult getDownShipDynamaics(@RequestBody(required = false)Map<String,Object> mapVal){
- return success(iShipDynamicsService.getDownShipDynamaics(mapVal));
- }
- @PostMapping("/getWagonWork")
- public RESTfulResult getWagonWork(@RequestBody(required = false) Map<String, Object> map){
- return success(iShipDynamicsService.getWagonWork(map));
- }
- @PostMapping("/getControlLines")
- public RESTfulResult getControlLines(@RequestBody(required = false) Map<String, Object> map){
- return success(iShipDynamicsService.getControlLines(map));
- }
- @PostMapping("/updateControlLine")
- public RESTfulResult updateControlLine(@RequestBody(required = false) Map<String, Object> map){
- TmsshipControlLine result=new TmsshipControlLine();
- result.setResultId(Short.parseShort(map.get("resultId").toString()));
- result.setUp(Short.parseShort(map.get("up").toString()));
- result.setDown(Short.parseShort(map.get("down").toString()));
- result.setCount(Short.parseShort(result.getUp()+result.getDown()+""));
- return success(iShipDynamicsService.updateControlLine(result));
- }
- @PostMapping("/getControlLinesTable")
- public RESTfulResult getControlLinesTable(@RequestBody(required = false) Map<String, Object> map){
- return success(iShipDynamicsService.getControlLinesTable(map));
- }
- }
|