Selaa lähdekoodia

增加定时器-半个小时查询一次揽件时间

wangxiaoming 5 vuotta sitten
vanhempi
commit
f40b284455

+ 9 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrder.java

@@ -175,6 +175,8 @@ public class SalesOrder implements Serializable {
 
     private Integer salesReturnGoods;//该字段控制订单项是否有退货的产品   1:没有  2:有
 
+    private Date orderCaseDate;//揽件时间
+
     public Integer getSalesOldOrderStatus() {
         return salesOldOrderStatus;
     }
@@ -1030,4 +1032,11 @@ public class SalesOrder implements Serializable {
         this.suSalesOrderItemList = suSalesOrderItemList;
     }
 
+    public Date getOrderCaseDate() {
+        return orderCaseDate;
+    }
+
+    public void setOrderCaseDate(Date orderCaseDate) {
+        this.orderCaseDate = orderCaseDate;
+    }
 }

+ 33 - 2
watero-rst-core/src/main/java/com.iamberry.rst.core/tools/KuaiDi100.java

@@ -2,16 +2,16 @@ package com.iamberry.rst.core.tools;
 
 import com.alibaba.fastjson.JSON;
 import com.iamberry.wechat.tools.HttpClient431Util;
-import com.iamberry.wechat.tools.NameUtils;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
+import org.apache.commons.codec.binary.Base64;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
-import org.apache.commons.codec.binary.Base64;
+
 import java.io.*;
 import java.net.*;
 import java.security.MessageDigest;
@@ -528,6 +528,37 @@ public class KuaiDi100 {
     }
 
     /**
+     * 百度快递查询签收时间 - 查询揽件时间
+     * 根据物流单号查询快递信息 state 0在途,1揽收,2疑难,3签收,4退签,5派件,6退回
+     * @param code
+     * @return
+     */
+    public Date selectCourierSignCaseTime(String code, String num){
+        JSONObject json = null;
+        boolean flag = false;
+        for(int i = 0; i < 3; i++){
+            json = selectCourierCompany2(code,num);
+            String state = json.getString("status");
+            if("0".equals(state) || "1".equals(state) || "2".equals(state) || "3".equals(state) || "4".equals(state)
+                    || "5".equals(state) || "6".equals(state)){
+                flag = true;
+                break;
+            }
+        }
+        if(flag){
+            try{
+                JSONObject data = JSONObject.fromObject(json.getString("data"));
+                JSONObject info = JSONObject.fromObject(data.getString("info"));
+                JSONArray context = info.getJSONArray("context");
+                return new Date(Long.parseLong(JSONObject.fromObject(context.get(context.size() - 1)).getString("time")) * 1000);
+            }catch (Exception e){
+                return null;
+            }
+        }
+        return null;
+    }
+
+    /**
      * 写入文件
      * @param path
      * @param s

+ 10 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -48,6 +48,12 @@ public interface SalesOrderService {
      * @return
      */
     Integer updateSalesOrder(SalesOrder salesOrder);
+    /**
+     * 修改订单信息
+     * @param salesOrder
+     * @return
+     */
+    Integer update(SalesOrder salesOrder);
 
     /**
      * 修改订单信息
@@ -536,4 +542,8 @@ public interface SalesOrderService {
      *通知配货数量查询各物流发货数量
      */
     List<OrderStatisticsInfo> listDeliveryLogisticsNum(OrderStatisticsInfo orderStatisticsInfo);
+    /**
+     *定时任务-查询没有揽件时间的订单
+     */
+    List<SalesOrder> orderAfterCaseDate();
 }

+ 10 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -31,7 +31,6 @@ import com.iamberry.rst.service.product.mapper.ProductMapper;
 import com.iamberry.rst.service.sys.mapper.SysConfigMapper;
 import com.iamberry.rst.util.PageUtil;
 import com.iamberry.wechat.tools.DateTimeUtil;
-import com.iamberry.wechat.tools.ResponseJson;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
 import org.slf4j.Logger;
@@ -147,6 +146,11 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         return 1;
     }
 
+    @Override
+    public Integer update(SalesOrder salesOrder) {
+        return  salesOrderMapper.updateSalesOrder(salesOrder);
+    }
+
     @Transactional
     @Override
     public Integer updateOrderInfo(SalesOrder salesOrder) {
@@ -1840,6 +1844,11 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         return salesOrderMapper.listDeliveryLogisticsNum(orderStatisticsInfo);
     }
 
+    @Override
+    public List<SalesOrder> orderAfterCaseDate() {
+        return salesOrderMapper.orderAfterCaseDate();
+    }
+
     /***
      * 计算金额
      * @param salesOrder

+ 4 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java

@@ -466,4 +466,8 @@ public interface SalesOrderMapper {
      *通知配货数量查询各物流发货数量
      */
     List<OrderStatisticsInfo> listDeliveryLogisticsNum(OrderStatisticsInfo orderStatisticsInfo);
+    /**
+     *定时任务-查询没有揽件时间的订单
+     */
+    List<SalesOrder> orderAfterCaseDate();
 }

+ 21 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml

@@ -942,6 +942,9 @@
       <if test="salesBelongOrderId != null and salesBelongOrderId != ''">
           sales_belong_orderId = #{salesBelongOrderId}
       </if >
+      <if test="orderCaseDate != null and orderCaseDate != ''">
+          order_case_date = #{orderCaseDate}
+      </if >
     </set>
     where sales_id = #{salesId}
     <if test="salesOldOrderStatus != null">
@@ -2135,4 +2138,22 @@
         LEFT JOIN tb_rst_cm_relation_order cro on soi.sales_id = cro.sales_id
         WHERE cro.relation_customer_id = #{customerId}
     </select>
+
+    <!-- 定时任务-查询没有揽件时间的订单 -->
+    <select id="orderAfterCaseDate" resultType="SalesOrder">
+        SELECT
+            sales_id,
+            sales_orderId,
+            sales_post_num,
+            sales_post_firm,
+            sales_deal_code
+        FROM tb_rst_sales_order_info
+        WHERE
+          sales_status = 1
+        AND sales_shipping_status = 1
+        AND order_case_date is null
+        AND sales_post_num is not null
+        AND sales_post_firm is not null
+    </select>
+
 </mapper>

+ 39 - 3
watero-rst-web/src/main/java/com/iamberry/rst/controllers/mq/MQTask.java

@@ -1,23 +1,28 @@
 package com.iamberry.rst.controllers.mq;
 
 import com.iamberry.rst.controllers.sys.SysController;
-import com.iamberry.rst.core.cm.*;
+import com.iamberry.rst.core.cm.CompanyInfo;
+import com.iamberry.rst.core.cm.Postage;
+import com.iamberry.rst.core.cm.PostageAuthority;
+import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.fm.ComplaintDetectInfo;
 import com.iamberry.rst.core.order.ProductType;
 import com.iamberry.rst.core.sms.OrderMessage;
 import com.iamberry.rst.core.sms.SmsMessage;
 import com.iamberry.rst.core.sys.Admin;
+import com.iamberry.rst.core.tools.KuaiDi100;
+import com.iamberry.rst.core.tools.LogisticsInfo;
 import com.iamberry.rst.faces.address.AddressService;
 import com.iamberry.rst.faces.cm.*;
 import com.iamberry.rst.faces.fm.ComplaintDetectInfoService;
 import com.iamberry.rst.faces.order.EfastOrderService;
+import com.iamberry.rst.faces.order.LogisticsInfoService;
 import com.iamberry.rst.faces.sms.MessageService;
 import com.iamberry.rst.faces.sms.SmsService;
 import com.iamberry.rst.faces.sys.SysConfigService;
 import com.iamberry.rst.faces.sys.SysService;
 import com.iamberry.rst.util.SmsConfig;
 import com.iamberry.rst.utils.EfastUtil;
-import com.iamberry.rst.core.tools.KuaiDi100;
 import com.iamberry.wechat.tools.ResponseJson;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
@@ -54,7 +59,6 @@ public class MQTask implements InitializingBean {
 	private SysService sysService;
 	@Autowired
 	private AddressService addressService;
-
 	@Autowired
 	private CustomerService customerService;
 	@Autowired
@@ -62,6 +66,8 @@ public class MQTask implements InitializingBean {
 	@Autowired
 	private KuaiDi100 kuaidi100;
 	@Autowired
+	private LogisticsInfoService logisticsInfoService;
+	@Autowired
 	private PostageAuthorityService postageAuthorityService;
 	@Autowired
 	private PostageService postageService;
@@ -579,4 +585,34 @@ public class MQTask implements InitializingBean {
 		logger.info("---------------- 询维修超时数据并短信通知结束 ---------------");
 	}
 
+	//@Scheduled(cron = "*/10 * * * * ?")
+	//@Scheduled(cron = "0 0 9,11,14,16,18,20 * * ? ")//推送时间分别为每天早上九点、中午十一点、下午三点、下午六点、晚上八点
+	//@Scheduled(cron = "0 0 */1 * * ?")//每小时执行一次
+//	@Scheduled(cron = "0 0/3 * * * ?")//每三分钟执行一次
+	@Scheduled(cron = "0 0/30 * * * ?")//每半个小时执行一次
+	public void orderCaseDate(){
+		logger.info("------------查询订单揽件时间 start-----------");
+		List<SalesOrder> salesOrderList = salesOrderService.orderAfterCaseDate();
+		if(salesOrderList != null && salesOrderList.size()>0){
+			for (SalesOrder salesOrder:salesOrderList) {
+				LogisticsInfo log = new LogisticsInfo();
+				log.setLogisticsRstCode(salesOrder.getSalesPostFirm());
+				List<LogisticsInfo> listlog = logisticsInfoService.getLogisticsInfoList(log);
+				Date date = kuaidi100.selectCourierSignCaseTime(listlog.get(0).getLogisticsOnehundredCode(),salesOrder.getSalesPostNum());
+				if(date != null){
+					SalesOrder so = new SalesOrder();
+					so.setSalesId(salesOrder.getSalesId());
+					so.setOrderCaseDate(date);
+					Integer flag = salesOrderService.update(so);
+					if(flag < 1){
+						logger.info("修改揽件时间异常,订单号:"+salesOrder.getSalesOrderId());
+					}
+				}else{
+					logger.info("查询揽件时间为空,订单号:"+salesOrder.getSalesOrderId());
+				}
+			}
+		}
+		logger.info("------------查询订单揽件时间 end-----------");
+	}
+
 }

+ 6 - 6
watero-rst-web/src/main/resources/dev-jdbc.properties

@@ -1,13 +1,13 @@
 jdbc.driver=com.mysql.jdbc.Driver
 ##### \uFFFD\uFFFD\u02BD\uFFFD\uFFFD\uFFFD\uFFFD ####
-jdbc.url=jdbc:mysql://iamberry.mysql.rds.aliyuncs.com/rst?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull
-jdbc.username=watero_rst
-jdbc.password=watero_RST
+#jdbc.url=jdbc:mysql://iamberry.mysql.rds.aliyuncs.com/rst?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull
+#jdbc.username=watero_rst
+#jdbc.password=watero_RST
 ##### \uFFFD\uFFFD\u02BD\uFFFD\uFFFD\uFFFD\uFFFD end #####
 
-#jdbc.url=jdbc:mysql://iamberry.mysql.rds.aliyuncs.com/rst_test_2?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull
-#jdbc.username=rst_test
-#jdbc.password=RST_test
+jdbc.url=jdbc:mysql://iamberry.mysql.rds.aliyuncs.com/rst_test_2?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull
+jdbc.username=rst_test
+jdbc.password=RST_test
 
 #pool settings
 jdbc.pool.init=1