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 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> list = iShipDynamicsService.selectAll(mapVal); if (list.size()==0){ // System.out.println("暂时没有位置作业"); return failed("暂时没有船舶动态"); } List> 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 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 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 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 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 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 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 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 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 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 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 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 mapVal){ return success(iShipDynamicsService.getLoadData(mapVal)); } @ApiOperation(value="万州港装车出库数据") @PostMapping("/getUnloadData") public RESTfulResult getUnloadData(@RequestBody(required = false)Map mapVal){ return success(iShipDynamicsService.getUnloadData(mapVal)); } @ApiOperation(value="下游港口船舶动态表") @PostMapping("/getDownShipDynamaics") public RESTfulResult getDownShipDynamaics(@RequestBody(required = false)Map mapVal){ return success(iShipDynamicsService.getDownShipDynamaics(mapVal)); } @PostMapping("/getWagonWork") public RESTfulResult getWagonWork(@RequestBody(required = false) Map map){ return success(iShipDynamicsService.getWagonWork(map)); } @PostMapping("/getControlLines") public RESTfulResult getControlLines(@RequestBody(required = false) Map map){ return success(iShipDynamicsService.getControlLines(map)); } @PostMapping("/updateControlLine") public RESTfulResult updateControlLine(@RequestBody(required = false) Map 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 map){ return success(iShipDynamicsService.getControlLinesTable(map)); } }