Index: pom.xml
===================================================================
--- pom.xml	(revision 28576)
+++ pom.xml	(revision 28589)
@@ -80,8 +80,13 @@
 	    <artifactId>json-lib</artifactId>    
 	    <version>2.4</version>
 	    <classifier>jdk15</classifier>    
-	</dependency>  
-	<dependency>
+		</dependency>
+	   <dependency>
+		   <groupId>org.springframework.boot</groupId>
+		   <artifactId>spring-boot-starter-test</artifactId>
+		   <scope>test</scope>
+	   </dependency>
+		<dependency>
 			<groupId>org.jsoup</groupId>
 			<artifactId>jsoup</artifactId>
 			<version>1.8.3</version>
Index: .
===================================================================
--- .	(revision 28576)
+++ .	(revision 28589)

Property changes on: .
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,3 ##
+*.idea
+*.iml
+target
Index: src/main/java/com/novaone/common/CommonInfo.java
===================================================================
--- src/main/java/com/novaone/common/CommonInfo.java	(revision 28576)
+++ src/main/java/com/novaone/common/CommonInfo.java	(revision 28589)
@@ -37,6 +37,12 @@
     // 流程结束
     public static final String GRAB_STATUS_ENABLED_FLAG = "6";
 
+    //EIR列表查询为空
+    public static final String GRAB_STATUS_EIR_LIST_EMPTY = "7";
+
+    //EIR信息中未能查询到需要的数据
+    public static final String GRAB_STATUS_EIR_LIST_DETAILS = "8";
+
     // 水果通用 是
     public static final String FRESHPORT_COMMON_YES = "Y";
 
@@ -60,13 +66,16 @@
     // API
     public static final String PAGE_API_URL = "https://eeir.sipg.com.cn/EIRIMS/servlet/WebRpcServlet";
 
-    // 已转车队列表参数类型
+    // 已接单列表参数类型，对应页面：首页>业务大厅>车队业务>车队接单管理>EIR接单 → 已接单
+    public static final String EIR_PAGE_LIST_TYPE_ORDER = "07";
+
+    //司机已接单列表参数乐星，对应页面：首页>业务大厅>车队业务>EIR查询下载>EIR查询 → 司机已接单
+    public static final String EIR_PAGE_LIST_TYPE_ORDER_TAKING = "O4";
+
+    // 已转车队列表参数类型，对应页面：首页>业务大厅>车队业务>车队派单管理>EIR转车队 → 已转车队
     public static final String EIR_PAGE_LIST_TYPE_TRANSFER = "OE";
 
-    // 已接单列表参数类型
-    public static final String EIR_PAGE_LIST_TYPE_ORDER = "07";
-
-    // EIR查询 已转车队
+    // EIR查询 已转车队，对应页面：首页>业务大厅>车队业务>EIR查询下载>EIR查询 → 已转车队
     public static final String EIR_PAGE_LIST_TYPE_TRANSFER_MIAN = "O5";
 
     // 打码平台 用户名
Index: src/main/java/com/novaone/control/Cron.java
===================================================================
--- src/main/java/com/novaone/control/Cron.java	(revision 28576)
+++ src/main/java/com/novaone/control/Cron.java	(revision 28589)
@@ -43,7 +43,6 @@
      * @date 2021年8月16日 上午9:32:13
      */
     @Scheduled(cron = "0 10/30 * * * ?")
-//    @Scheduled(cron = "0 0/1 * * * ?")
     public void grabLogin() {
         log.info("begin------grabLogin--------" + LocalDateTime.now());
         String jsessionId = "";
@@ -61,8 +60,8 @@
 	    }
         log.info("end------grabLogin--------" + LocalDateTime.now());
     }
-    
-    // 每天跑一次
+
+
     @Scheduled(cron = "0 0/15 * * * ?")
     public void grabEirimsData() {
         log.info("begin------grabEirimsData--------" + LocalDateTime.now());
Index: src/main/java/com/novaone/dao/EirimsJzxhInfoMapper.java
===================================================================
--- src/main/java/com/novaone/dao/EirimsJzxhInfoMapper.java	(revision 28576)
+++ src/main/java/com/novaone/dao/EirimsJzxhInfoMapper.java	(revision 28589)
@@ -1,6 +1,8 @@
 package com.novaone.dao;
 
 import com.novaone.entity.EirimsJzxhInfo;
+import com.novaone.entity.Hddz;
+import org.apache.ibatis.annotations.Select;
 
 public interface EirimsJzxhInfoMapper {
     int deleteByPrimaryKey(String id);
@@ -10,8 +12,13 @@
     int insertSelective(EirimsJzxhInfo record);
 
     EirimsJzxhInfo selectByPrimaryKey(String id);
-//发射点发射点发射点发手动阀手动阀
+
     int updateByPrimaryKeySelective(EirimsJzxhInfo record);
 
     int updateByPrimaryKey(EirimsJzxhInfo record);
+
+
+    @Select("SELECT 1 FROM eirims_jzxh_info WHERE rwbh = #{rwbh} AND ywbh = #{ywbh} AND jzxh = #{jzxh} LIMIT 1")
+    Integer exists(Hddz hddz);
+
 }
\ No newline at end of file
Index: src/main/java/com/novaone/fdao/Mapper/HddzMapper.xml
===================================================================
--- src/main/java/com/novaone/fdao/Mapper/HddzMapper.xml	(revision 28576)
+++ src/main/java/com/novaone/fdao/Mapper/HddzMapper.xml	(revision 28589)
@@ -63,7 +63,7 @@
 			and hwc.rwmc = '堆场' 
 			and convert(varchar(10),hw.rwkssj,120) >= '2021-05-24' and convert(varchar(10),hw.rwkssj,120) <= convert(varchar(10),getdate(),120)
 			and DATEDIFF ( day, hw.rwkssj,getdate()) <= 30
-			and isnull(hw.jzxh,'') !='' and isnull(EIRcycph,'')!='' and isnull(EIRccrq,'')!='' and isnull(EIRjcrq,'')=''
+			and isnull(hw.jzxh,'') !='' and isnull(EIRcycph,'')!='' and isnull(EIRccrq,'')!='' and isnull(EIRjcrq,'')='' -- eir进场车牌号不为空 并且 出场日期不为空 并且 进场日期为空
 		  and isnull(hw.cdmc,'') !='上海隆钛' and CHARINDEX('WL',h.hth)=0
 		order by hw.rwkssj desc
 			]]>
Index: src/main/java/com/novaone/service/GrabEirimsService.java
===================================================================
--- src/main/java/com/novaone/service/GrabEirimsService.java	(revision 28576)
+++ src/main/java/com/novaone/service/GrabEirimsService.java	(revision 28589)
@@ -67,6 +67,13 @@
     void insertEirimsData(Hddz hddz, String status, String msg);
 
     /**
+     * 判断给定的集装箱数据，在日志表中是否存在对应的日志记录
+     * @param hddz 集装箱相关数据
+     * @return true：表示存在对应的日志
+     */
+    boolean logExists(Hddz hddz);
+
+    /**
      * 
      * grabEirimsDataList(抓取记录)         
      * @param   name      
Index: src/main/java/com/novaone/service/impl/GrabEirimsServiceImpl.java
===================================================================
--- src/main/java/com/novaone/service/impl/GrabEirimsServiceImpl.java	(revision 28576)
+++ src/main/java/com/novaone/service/impl/GrabEirimsServiceImpl.java	(revision 28589)
@@ -153,13 +153,21 @@
         }
     }
 
+    /**
+     * 根据参数hddz中的集装箱号查询eir信息。
+     *      首先根据集装箱号查询EIR，在网站返回的Eir数据中获取对应的集装箱ID.
+     *      得到集装箱ID，在根据集装箱ID查询该EIR的详细信息。并将EIR相信信息中包含的有用信息（出场时间、运输车牌号、集装箱归还入场时间）写回水果通DB。
+     *
+     * @param hddz 需要去查询EIR信息的业务数据
+     * @throws Exception 调用查询EIR列表接口、查询EIR详情接口，以及向水果通和日志库中写入数据时可能出现的异常。
+     */
     @Override
     public void grabEirimsData(String jsessionId, Hddz hddz) throws Exception {
         try {
             if (!CommonUtils.isEmpty(jsessionId)) {
                 String jzxh = hddz.getJzxh();
-                // 查询集装箱id
-                String containerId = queryContainerId(jsessionId, jzxh, CommonInfo.EIR_PAGE_LIST_TYPE_ORDER);
+                //尝试从三个EIR列表查询页面，根据集装箱号查询EIR对应的containerId。
+                String containerId = queryContainerId(jsessionId, jzxh, CommonInfo.EIR_PAGE_LIST_TYPE_ORDER_TAKING);
                 if (CommonUtils.isEmpty(containerId)) {
                     containerId = queryContainerId(jsessionId, jzxh, CommonInfo.EIR_PAGE_LIST_TYPE_TRANSFER);
                 }
@@ -169,11 +177,12 @@
                 log.info("jzxh:" + jzxh + " containerId:" + containerId);
                 if (!CommonUtils.isEmpty(containerId)) {
                     boolean updateStatus = false;
-                    // 查询爬取信息
+                    //尝试根据containerId查询EIR信息，如果从EIR信息中能得到出场时间、承运车辆号牌、入场时间中的一个，咋返回true。
                     updateStatus = queryEirResultByContainerId(jsessionId, containerId, hddz);
                     log.info("jzxh:" + jzxh + " eirResult:" + JSONObject.toJSONString(hddz));
                     if (updateStatus) {
                         grabEirimsService.updateEirHddzData(hddz);
+                        log.info("写入水果通DB成功{}",JSON.toJSONString(hddz));
                         grabEirimsService.insertEirimsData(hddz, CommonInfo.GRAB_STATUS_SUCCESS, null);
                         //如果出场日期不为空，同时更新出电子围栏时间和出港区时间
                         if(!CommonUtils.isEmpty(hddz.getEIRccrq())) {
@@ -180,9 +189,17 @@
                         	grabEirimsService.updateEirCdzwlsj(hddz);
                         	grabEirimsService.updateEirCgqsj(hddz);
                         }
+                        return;
                     }
-
-                }
+                    //EIR信息中未查询到需要的数据，尝试记录操作日志。
+                    if (logExists(hddz)) {
+                        grabEirimsService.insertEirimsData(hddz, CommonInfo.GRAB_STATUS_EIR_LIST_DETAILS, "EIR信息中未能查询到需要的数据");
+                    }
+                    return;
+                    }
+                //EIR列表未查询到数据，尝试记录操作日志。
+                if (!logExists(hddz)) return;
+                grabEirimsService.insertEirimsData(hddz, CommonInfo.GRAB_STATUS_EIR_LIST_EMPTY, "EIR列表查询为空");
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -191,14 +208,15 @@
     }
 
     /**
-     * 
-     * queryEirResultByContainerId(根据id爬取网页详情信息)         
-     * @param   name      
-     * @param  @return    设定文件    
-     * @return String    DOM对象      
-     * @Exception 异常对象    
-     * @@author gz
-     * @date 2020年10月13日 下午4:01:21
+     * 根据queryContainerId()方法查询的ContainerId，查询该集装箱对应EIR的详情信息。
+     * 并从查询的EIR详情中尝试获取：运输车牌号、集装箱出场时间、集装箱入场时间。
+     * 当运输车牌号、集装箱出场时间、集装箱入场时间，其中一项可以获取到则该方法返回true，并将查询到的数据记录到方法参数“hddz”对象中。
+     *
+     * @param jsessionId 接口调用时的Cookies
+     * @param containerId 被调用系统中集装箱对应的ID，根据该ID查询EIR详情。
+     * @param hddz 用户存储ER详情中查询到的运输车牌号、集装箱出场时间、集装箱入场时间。
+     * @return 运输车牌号、集装箱出场时间、集装箱入场时间有一项可以查询到则返回true。
+     * @throws Exception 接口调用时抛出的异常。
      */
     private boolean queryEirResultByContainerId(String jsessionId, String containerId, Hddz hddz) throws Exception {
         boolean updateStatus = false;
@@ -215,6 +233,7 @@
             JSONObject resultSet = json.getJSONObject("resultSet");
             JSONArray jsonArray = resultSet.getJSONArray("eirInspectList");
             String truckNo = "";
+            //如果从接口响应结果中不能获取“eirInspectList”，则直接从“resultSet”获取承运车辆牌号。
             if (!CommonUtils.isEmpty(jsonArray)) {
                 JSONObject o = JSONObject.parseObject(jsonArray.get(0).toString());
                 truckNo = o.getString("truckNo");
@@ -242,14 +261,13 @@
     }
 
     /**
-     * 
-     * queryContainerId(根据集装箱号获取列表信息主键id)         
-     * @param   name      
-     * @param  @return    设定文件    
-     * @return String    DOM对象      
-     * @Exception 异常对象    
-     * @@author gz
-     * @date 2020年10月13日 下午4:01:46
+     *queryContainerId(根据集装箱号获取列表信息主键id)
+     *
+     * @param jsessionId 接口调用时的Cookies
+     * @param jzxh 需要查询的集装箱号
+     * @param listType 对应不同查询页面调用接口时传递的参数。不同的类型标识，相当于从网站上的不同功能页面进行查询。
+     * @return 对方网站系统中，被查询集装箱号对应的集装箱ID
+     * @throws IOException  接口调用时抛出的异常。
      */
     private String queryContainerId(String jsessionId, String jzxh, String listType) throws IOException {
         Map<String, Object> paramResult = new HashMap<String, Object>();
@@ -291,7 +309,7 @@
      * 
      * loginPageUrl(登录eir网站)         
      * @param times 
-     * @param   name      
+     * @param
      * @param  @return    设定文件    
      * @return String    DOM对象      
      * @Exception 异常对象    
@@ -342,8 +360,7 @@
 
     /**
      * 
-     * getJsessionId(获取jsessionid)         
-     * @param   name      
+     * getJsessionId(获取jsessionid)
      * @param  @return    设定文件    
      * @return String    DOM对象      
      * @Exception 异常对象    
@@ -359,8 +376,7 @@
 
     /**
      * 
-     * download(下载验证码)         
-     * @param   name      
+     * download(下载验证码)
      * @param  @return    设定文件    
      * @return String    DOM对象      
      * @Exception 异常对象    
@@ -430,6 +446,7 @@
             jzxhInfo.setMsg(msg);
         }
         eirimsJzxhInfoMapper.insertSelective(jzxhInfo);
+        log.info("日志表写入成功：{}",JSON.toJSONString(jzxhInfo));
     }
 
     private String platGetCode(String fileName) throws Exception {
@@ -469,4 +486,8 @@
 
     }
 
+    @Override
+    public boolean logExists(Hddz hddz) {
+        return eirimsJzxhInfoMapper.exists(hddz) != null;
+    }
 }
