liyg 2 jaren geleden
bovenliggende
commit
6dc8cef424

+ 20 - 0
src/main/java/com/steerinfo/dil/controller/ShipDynamicsController.java

@@ -12,6 +12,7 @@ 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
@@ -30,6 +31,25 @@ public class ShipDynamicsController extends BaseRESTfulController {
         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("暂时没有位置作业");

+ 130 - 88
src/main/resources/com/steerinfo/dil/mapper/ShipDynamicsMapper.xml

@@ -3,91 +3,25 @@
 <mapper namespace="com.steerinfo.dil.mapper.ShipDynamicsMapper">
 <!-- 获取船舶动态表数据  -->
     <select id="selectAll" resultType="java.util.Map" parameterType="java.util.Map">
-    SELECT * FROM (
-                      select DISTINCT
-                          db.BATCH_ID "batchId",
-                          DBI2.BATCH_INFACOTRY_ID  "batchInfacoryId",
-                          db.result_foreign_ship_name "shipName",
-                          rm.material_name "materialName",
-                          adn.NOTICE_DELIVERY_TIME "dateOfLoans",
-                          adn.RESULT_NUMBER_OF_LOANS "numberOfLoans",
-                          rp.port_name "portName",
-                          wgm.gm_tonnage "tonnage",
-                          rc.capacity_number "capacity",
-                          tlsr.RESULT_ACTUAL_INSTALLATIONS "capacityNumber",
-                          tlsr.RESULT_OUT_PORT_TIME "outPortTime",
-                          tlsr.RESULT_ARRIVAL_PORT_TIME "dgsj",
-                          tsl.LOCATION_STATUS "locationStatus",
-                          tsl.LOCATION_VALUE "locationValue",
-                          NVL(ADN.RESULT_MEMO,'块矿') "materialTypeName",
-                          RMT.MATERIAL_TYPE_ID "materialTypeId",
-                          OSI.INSTRUCTIONS_STATUS "instructionStatus"
-                      from AMSSHIP_DELIVERY_NOTICE adn
-                               LEFT JOIN DIL_BATCH_INFACOTRY DBI2 on adn.batch_id=DBI2.BATCH_INFACOTRY_ID
-                               LEFT JOIN AMSSHIP_DELIVERY_ATTORNEY ADA ON ADA.BATCH_ID = adn.batch_id
-                               JOIN DIL_BATCH DB ON DBI2.BATCH_ID=DB.BATCH_ID
-                               join rms_material rm on db.material_id=rm.material_id
-                               left join rms_port rp on rp.port_id=ADA.DOWN_SWIM_PORT_ID
-                               left join WMSH_GRID_MATERIAL wgm on wgm.batch_id = DB.BATCH_ID AND ADA.DOWN_SWIM_PORT_ID=WGM.PORT_ID
-                               left join TMSSHIP_LOAD_SHIP_RESULT tlsr on DBI2.BATCH_INFACOTRY_ID=tlsr.batch_id
-                               left join tmsship_total_result ttr on ttr.result_id=tlsr.TOTAL_RESULT_ID
-                               left join omsship_instructions_capacity oic on ttr.order_id=oic.instructions_capacity_id
-                               left join OMSSHIP_SHIPMENT_INSTRUCTIONS OSI  ON OSI.SHIPMENT_INSTRUCTIONS_ID=oic.INSTRUCTIONS_ID
-                               left join rms_capacity rc on oic.capacity_id=rc.capacity_id
-                               left join RMS_MATERIAL_TYPE RMT on adn.MATERIAL_TYPE_ID =  RMT.MATERIAL_TYPE_ID
-                               left join (select * from tmsship_ship_location t where t.location_id in
-                                                                                      (SELECT
-                                                                                           t.location_id
-                                                                                       FROM
-                                                                                           (
-                                                                                               SELECT
-                                                                                                   t.location_id,
-                                                                                                   t.total_result_id,
-                                                                                                   t.location_route_time,
-                                                                                                   ROW_NUMBER () OVER (
-                                                                                         PARTITION BY t.total_result_id
-                                                                                         ORDER BY t.location_route_time DESC
-                                                                                         ) AS rn
-                                                                                               FROM
-                                                                                                   tmsship_ship_location t
-                                                                                           ) t
-                                                                                       WHERE
-                                                                                           rn = 1)) tsl on tsl.total_result_id=ttr.result_id
-                      where ttr.ship_status = 0 and tsl.LOCATION_STATUS is not null and tlsr.DELETED=0
-                        and  adn.DELETED=0 and oic.DELETED=0
-                      union all
-                      select DISTINCT
-                          db.BATCH_ID "batchId",
-                          DBI2.BATCH_INFACOTRY_ID  "batchInfacoryId",
-                          db.result_foreign_ship_name "shipName",
-                          rm.material_name "materialName",
-
-                          adn.NOTICE_DELIVERY_TIME "dateOfLoans",
-                          adn.RESULT_NUMBER_OF_LOANS "numberOfLoans",
-                          rp.port_name "portName",
-                          wgm.gm_tonnage "tonnage",
-                          ' ' "capacity",
-                          0 "capacityNumber",
-                          null "outPortTime",
-                          null "dgsj",
-                          ' ' "locationStatus",
-                          ' ' "locationValue",
-                          NVL(ADN.RESULT_MEMO,'块矿') "materialTypeName",
-                          null "materialTypeId",
-                          null "instructionStatus"
-
-                      from AMSSHIP_DELIVERY_NOTICE adn
-                               LEFT JOIN DIL_BATCH_INFACOTRY DBI2 on adn.batch_id=DBI2.BATCH_INFACOTRY_ID
-                               LEFT JOIN AMSSHIP_DELIVERY_ATTORNEY ADA ON ADA.BATCH_ID = adn.batch_id
-                               JOIN DIL_BATCH DB ON DBI2.BATCH_ID=DB.BATCH_ID
-                               join rms_material rm on db.material_id=rm.material_id
-                               left join rms_port rp on rp.port_id=ADA.DOWN_SWIM_PORT_ID
-                               left join WMSH_GRID_MATERIAL wgm on wgm.batch_id = DB.BATCH_ID AND ADA.DOWN_SWIM_PORT_ID=WGM.PORT_ID
-                               left join RMS_MATERIAL_TYPE RMT on adn.MATERIAL_TYPE_ID =  RMT.MATERIAL_TYPE_ID
-                      where adn.DELETED=0 and wgm.DELETED=0 and wgm.gm_tonnage>0
-                        and DBI2.BATCH_INFACOTRY_ID not in(
+        SELECT * FROM (
                           select DISTINCT
-                              DBI2.BATCH_INFACOTRY_ID  "batchInfacoryId"
+                              db.BATCH_ID "batchId",
+                              DBI2.BATCH_INFACOTRY_ID  "batchInfacoryId",
+                              db.result_foreign_ship_name "shipName",
+                              rm.material_name "materialName",
+                              adn.NOTICE_DELIVERY_TIME "dateOfLoans",
+                              adn.RESULT_NUMBER_OF_LOANS "numberOfLoans",
+                              rp.port_name "portName",
+                              wgm.gm_tonnage-NVL(TIN."afterIn",0)+NVL(TOUT."afterOut",0) "tonnage",
+                              rc.capacity_number "capacity",
+                              tlsr.RESULT_ACTUAL_INSTALLATIONS "capacityNumber",
+                              tlsr.RESULT_OUT_PORT_TIME "outPortTime",
+                              tlsr.RESULT_ARRIVAL_PORT_TIME "dgsj",
+                              tsl.LOCATION_STATUS "locationStatus",
+                              tsl.LOCATION_VALUE "locationValue",
+                              NVL(ADN.RESULT_MEMO,'进口块矿') "materialTypeName",
+                              RMT.MATERIAL_TYPE_ID "materialTypeId",
+                              OSI.INSTRUCTIONS_STATUS "instructionStatus"
                           from AMSSHIP_DELIVERY_NOTICE adn
                                    LEFT JOIN DIL_BATCH_INFACOTRY DBI2 on adn.batch_id=DBI2.BATCH_INFACOTRY_ID
                                    LEFT JOIN AMSSHIP_DELIVERY_ATTORNEY ADA ON ADA.BATCH_ID = adn.batch_id
@@ -95,8 +29,27 @@
                                    join rms_material rm on db.material_id=rm.material_id
                                    left join rms_port rp on rp.port_id=ADA.DOWN_SWIM_PORT_ID
                                    left join WMSH_GRID_MATERIAL wgm on wgm.batch_id = DB.BATCH_ID AND ADA.DOWN_SWIM_PORT_ID=WGM.PORT_ID
+                                   LEFT JOIN (
+                              SELECT
+                                  BATCH_ID "batchId",
+                                  PORT_ID "portId",
+                                  SUM(RESULT_MATERIAL_NUMBER) "afterIn"
+                              FROM WMSH_INBOUND_RESULT
+                              where DELETED=0 AND WORK_TIME > to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss')
+                              GROUP BY BATCH_ID,PORT_ID
+                          ) TIN ON wgm.batch_id = TIN ."batchId" AND WGM.PORT_ID=TIN."portId"
+                                   LEFT JOIN (
+                              SELECT
+                                  BATCH_ID "batchId",
+                                  HARBOR_ID "portId",
+                                  SUM(RESULT_TONNAGE) "afterOut"
+                              FROM WMSH_OUTBOUND_RESULT
+                              where  WORK_TIME > to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss')
+                              GROUP BY BATCH_ID,HARBOR_ID
+                          ) TOUT ON wgm.batch_id = TOUT ."batchId" AND WGM.PORT_ID=TOUT."portId"
                                    left join TMSSHIP_LOAD_SHIP_RESULT tlsr on DBI2.BATCH_INFACOTRY_ID=tlsr.batch_id
                                    left join tmsship_total_result ttr on ttr.result_id=tlsr.TOTAL_RESULT_ID
+                                   left join TMSSHIP_UNLOAD_SHIP_RESULT tusr on tusr.TOTAL_RESULT_ID = ttr.result_id
                                    left join omsship_instructions_capacity oic on ttr.order_id=oic.instructions_capacity_id
                                    left join OMSSHIP_SHIPMENT_INSTRUCTIONS OSI  ON OSI.SHIPMENT_INSTRUCTIONS_ID=oic.INSTRUCTIONS_ID
                                    left join rms_capacity rc on oic.capacity_id=rc.capacity_id
@@ -119,11 +72,100 @@
                                                                                                ) t
                                                                                            WHERE
                                                                                                rn = 1)) tsl on tsl.total_result_id=ttr.result_id
-                          where ttr.ship_status = 0 and tsl.LOCATION_STATUS is not null and tlsr.DELETED=0
-                            and  adn.DELETED=0 and oic.DELETED=0
+                          where tsl.LOCATION_STATUS is not null and tlsr.DELETED=0 and
+                                  to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss') > TLSR.RESULT_LOAD_SHIP_DATE
+                            and (tusr.RESULT_ID is null or tusr.RESULT_START_TIME > to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss'))
+                            and  adn.DELETED=0 and ADA.DELETED=0
+                          union all
+                          select DISTINCT
+                              db.BATCH_ID "batchId",
+                              DBI2.BATCH_INFACOTRY_ID  "batchInfacoryId",
+                              db.result_foreign_ship_name "shipName",
+                              rm.material_name "materialName",
+                              adn.NOTICE_DELIVERY_TIME "dateOfLoans",
+                              adn.RESULT_NUMBER_OF_LOANS "numberOfLoans",
+                              rp.port_name "portName",
+                              wgm.gm_tonnage-NVL(TIN."afterIn",0)+NVL(TOUT."afterOut",0) "tonnage",
+                              ' ' "capacity",
+                              0 "capacityNumber",
+                              null "outPortTime",
+                              null "dgsj",
+                              ' ' "locationStatus",
+                              ' ' "locationValue",
+                              NVL(ADN.RESULT_MEMO,'进口块矿') "materialTypeName",
+                              null "materialTypeId",
+                              null "instructionStatus"
+                          from AMSSHIP_DELIVERY_NOTICE adn
+                                   LEFT JOIN DIL_BATCH_INFACOTRY DBI2 on adn.batch_id=DBI2.BATCH_INFACOTRY_ID
+                                   LEFT JOIN AMSSHIP_DELIVERY_ATTORNEY ADA ON ADA.BATCH_ID = adn.batch_id
+                                   JOIN DIL_BATCH DB ON DBI2.BATCH_ID=DB.BATCH_ID
+                                   join rms_material rm on db.material_id=rm.material_id
+                                   left join rms_port rp on rp.port_id=ADA.DOWN_SWIM_PORT_ID
+                                   left join WMSH_GRID_MATERIAL wgm on wgm.batch_id = DB.BATCH_ID AND ADA.DOWN_SWIM_PORT_ID=WGM.PORT_ID
+                                   LEFT JOIN (
+                              SELECT
+                                  BATCH_ID "batchId",
+                                  PORT_ID "portId",
+                                  SUM(RESULT_MATERIAL_NUMBER) "afterIn"
+                              FROM WMSH_INBOUND_RESULT
+                              where DELETED=0 AND WORK_TIME > to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss')
+                              GROUP BY BATCH_ID,PORT_ID
+                          ) TIN ON wgm.batch_id = TIN ."batchId" AND WGM.PORT_ID=TIN."portId"
+                                   LEFT JOIN (
+                              SELECT
+                                  BATCH_ID "batchId",
+                                  HARBOR_ID "portId",
+                                  SUM(RESULT_TONNAGE) "afterOut"
+                              FROM WMSH_OUTBOUND_RESULT
+                              where  WORK_TIME > to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss')
+                              GROUP BY BATCH_ID,HARBOR_ID
+                          ) TOUT ON wgm.batch_id = TOUT ."batchId" AND WGM.PORT_ID=TOUT."portId"
+                                   left join RMS_MATERIAL_TYPE RMT on adn.MATERIAL_TYPE_ID =  RMT.MATERIAL_TYPE_ID
+                          where adn.DELETED=0 and wgm.DELETED=0  and ADA.DELETED=0
+                          and wgm.gm_tonnage-NVL(TIN."afterIn",0)+NVL(TOUT."afterOut",0)>0
+                            and  to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss') > ADA.ATTORNEY_TIME
+                            and DBI2.BATCH_INFACOTRY_ID not in(
+                              select DISTINCT
+                                  DBI2.BATCH_INFACOTRY_ID  "batchInfacoryId"
+                              from AMSSHIP_DELIVERY_NOTICE adn
+                                       LEFT JOIN DIL_BATCH_INFACOTRY DBI2 on adn.batch_id=DBI2.BATCH_INFACOTRY_ID
+                                       LEFT JOIN AMSSHIP_DELIVERY_ATTORNEY ADA ON ADA.BATCH_ID = adn.batch_id
+                                       JOIN DIL_BATCH DB ON DBI2.BATCH_ID=DB.BATCH_ID
+                                       join rms_material rm on db.material_id=rm.material_id
+                                       left join rms_port rp on rp.port_id=ADA.DOWN_SWIM_PORT_ID
+                                       left join WMSH_GRID_MATERIAL wgm on wgm.batch_id = DB.BATCH_ID AND ADA.DOWN_SWIM_PORT_ID=WGM.PORT_ID
+                                       left join TMSSHIP_LOAD_SHIP_RESULT tlsr on DBI2.BATCH_INFACOTRY_ID=tlsr.batch_id
+                                       left join tmsship_total_result ttr on ttr.result_id=tlsr.TOTAL_RESULT_ID
+                                       left join TMSSHIP_UNLOAD_SHIP_RESULT tusr on tusr.TOTAL_RESULT_ID=ttr.result_id
+                                       left join omsship_instructions_capacity oic on ttr.order_id=oic.instructions_capacity_id
+                                       left join OMSSHIP_SHIPMENT_INSTRUCTIONS OSI  ON OSI.SHIPMENT_INSTRUCTIONS_ID=oic.INSTRUCTIONS_ID
+                                       left join rms_capacity rc on oic.capacity_id=rc.capacity_id
+                                       left join RMS_MATERIAL_TYPE RMT on adn.MATERIAL_TYPE_ID =  RMT.MATERIAL_TYPE_ID
+                                       left join (select * from tmsship_ship_location t where t.location_id in
+                                                                                              (SELECT
+                                                                                                   t.location_id
+                                                                                               FROM
+                                                                                                   (
+                                                                                                       SELECT
+                                                                                                           t.location_id,
+                                                                                                           t.total_result_id,
+                                                                                                           t.location_route_time,
+                                                                                                           ROW_NUMBER () OVER (
+                                                                                         PARTITION BY t.total_result_id
+                                                                                         ORDER BY t.location_route_time DESC
+                                                                                         ) AS rn
+                                                                                                       FROM
+                                                                                                           tmsship_ship_location t
+                                                                                                   ) t
+                                                                                               WHERE
+                                                                                                   rn = 1)) tsl
+                                                 on tsl.total_result_id=ttr.result_id
+                              where tsl.LOCATION_STATUS is not null and tlsr.DELETED=0 and adn.DELETED=0
+                                AND  to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss') > TLSR.RESULT_LOAD_SHIP_DATE
+                                and (tusr.RESULT_ID is null or tusr.RESULT_START_TIME > to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss'))
+                          )
                       )
-        )
-        Order By "materialTypeName","batchId","batchInfacoryId" DESC
+        ORDER BY DECODE("materialTypeName",'低富粉',1,'中富粉',2,'高富粉',3,'机精粉',4 ,'进口块矿',5,6),"batchId","batchInfacoryId" DESC
     </select>
     <select id="selectByshipName" resultType="java.util.Map" parameterType="java.util.Map">
         select sd.GM_TONNAGE as "tonnage",