JAVA 订阅推送快递100物流消息(二)
接上篇。本文主要是对快递100推送的物流消息进行解析,并存入数据库。
废话不多说,直接上代码。
Controller层:
package com.vue.controller;import java.util.HashMap;
import java.util.Map;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;import com.alibaba.fastjson.JSONObject;
import com.aliyun.openservices.ons.api.Producer;
import com.hhz.basic.util.common.JacksonHelper;
import com.hhz.basic.util.common.JsonReturn;
import com.hhz.basic.util.common.ProducerDelayHelper;
import com.hhz.basic.util.common.PropertiesHelper;
import com.hhz.basic.util.common.SYSLog;
import com.hhz.entity.shop.GoodsUserOrder;
import com.hhz.entity.sms.NoticeRequest;
import com.hhz.entity.sms.NoticeResponse;
import com.hhz.entity.sms.ResultItem;
import com.hhz.service.WlOrderMgr;@Controller
@RequestMapping(value = "/vue/addWlOrder")
public class AddWlOrderController extends AbstractController {@Autowiredprivate WlOrderMgr wlOrderMgrImpl;@Autowiredprivate Producer producer;/*** 推送* @param request* @return*/@RequestMapping(value="/addWlOrder.do",produces="application/json;charset=UTF-8", method = RequestMethod.POST)@ResponseBodyprotected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {NoticeResponse resp = new NoticeResponse();resp.setResult(false);resp.setReturnCode("500");resp.setMessage("保存失败");response.setCharacterEncoding("UTF-8");try {String param = request.getParameter("param");//TODO 日志SYSLog.PrintLogResult("物流反馈信息:\t"+param,"WlOrder");System.out.println("推了-----------------");
// String param = "{\"status\":\"polling\",\"billstatus\":\"sending\",\"message\":\"到达目的城市\",\"lastResult\":{\"message\":\"ok\",\"nu\":\"806440020497397415\",\"ischeck\":\"0\",\"com\":\"yuantong\",\"status\":\"3\",\"data\":[{\"time\":\"2019-06-11 09:46:59\",\"context\":\"货物已分配,等待配送\",\"ftime\":\"2019-06-11 09:46:59\",\"areaCode\":null,\"areaName\":null,\"status\":\"在途\"},{\"time\":\"2019-06-11 09:46:58\",\"context\":\"货物已分配,等待配送\",\"ftime\":\"2019-06-11 09:46:58\",\"areaCode\":null,\"areaName\":null,\"status\":\"在途\"},{\"time\":\"2019-06-11 09:44:43\",\"context\":\"货物已分配,等待配送\",\"ftime\":\"2019-06-11 09:44:43\",\"areaCode\":null,\"areaName\":null,\"status\":\"在途\"},{\"time\":\"2019-06-11 09:44:42\",\"context\":\"货物已分配,等待配送\",\"ftime\":\"2019-06-11 09:44:42\",\"areaCode\":null,\"areaName\":null,\"status\":\"在途\"},{\"time\":\"2019-06-11 07:30:44\",\"context\":\"货物已分配,等待配送\",\"ftime\":\"2019-06-11 07:30:44\",\"areaCode\":null,\"areaName\":null,\"status\":\"在途\"},{\"time\":\"2019-06-11 07:30:43\",\"context\":\"货物已到达【上海罗店营业部】\",\"ftime\":\"2019-06-11 07:30:43\",\"areaCode\":\"CN311313101000\",\"areaName\":\"上海,宝山区,宝山区,罗店镇\",\"status\":\"在途\"},{\"time\":\"2019-06-11 05:10:44\",\"context\":\"货物已完成分拣,离开【昆山金阳分拣中心】\",\"ftime\":\"2019-06-11 05:10:44\",\"areaCode\":\"CN320583000000\",\"areaName\":\"江苏,苏州市,昆山市\",\"status\":\"在途\"},{\"time\":\"2019-06-10 21:38:25\",\"context\":\"货物已到达【昆山金阳分拣中心】\",\"ftime\":\"2019-06-10 21:38:25\",\"areaCode\":\"CN320583000000\",\"areaName\":\"江苏,苏州市,昆山市\",\"status\":\"在途\"},{\"time\":\"2019-06-10 21:38:08\",\"context\":\"货物已到达【昆山金阳分拣中心】\",\"ftime\":\"2019-06-10 21:38:08\",\"areaCode\":\"CN320583000000\",\"areaName\":\"江苏,苏州市,昆山市\",\"status\":\"在途\"},{\"time\":\"2019-06-10 19:09:24\",\"context\":\"货物已完成分拣,离开【昆山千灯亚一分拣中心】\",\"ftime\":\"2019-06-10 19:09:24\",\"areaCode\":\"CN320583108000\",\"areaName\":\"江苏,苏州市,昆山市,千灯镇\",\"status\":\"在途\"},{\"time\":\"2019-06-10 19:08:24\",\"context\":\"货物已交付京东物流\",\"ftime\":\"2019-06-10 19:08:24\",\"areaCode\":null,\"areaName\":null,\"status\":\"在途\"},{\"time\":\"2019-06-10 19:08:24\",\"context\":\"货物已到达【昆山千灯亚一分拣中心】\",\"ftime\":\"2019-06-10 19:08:24\",\"areaCode\":\"CN320583108000\",\"areaName\":\"江苏,苏州市,昆山市,千灯镇\",\"status\":\"在途\"}],\"state\":\"3\",\"condition\":\"F00\"}}";// 保存推送的物流信息wlOrderMgrImpl.addWLOrders(param);resp.setResult(true);resp.setReturnCode("200");resp.setMessage("保存成功");response.getWriter().print(JacksonHelper.toJSON(resp)); // 这里必须返回,否则认为失败,过30分钟又会重复推送。return null;} catch (Exception e) {System.out.println("Wlorder");e.printStackTrace();resp.setMessage("保存失败");response.getWriter().print(JacksonHelper.toJSON(resp));// 保存失败,服务端等30分钟会重复推送。return null;}}public static String params(){NoticeRequest req = new NoticeRequest();//req.setBillstatus("polling");req.setMessage("到达");req.setStatus("check");req.getLastResult().setCom("shentong");req.getLastResult().setCondition("F00");req.getLastResult().setIscheck("0");req.getLastResult().setNu("3707299775015");//req.getLastResult().setState("0");req.getLastResult().setState("2");req.getLastResult().setStatus("200");req.getLastResult().setMessage("ok");ResultItem item = new ResultItem();item.setContext("上海分拨中心/装件入车扫描 ");item.setFtime("2012-08-28 16:33:19");item.setTime("2012-08-28 16:33:19");req.getLastResult().getData().add(item);item = new ResultItem();item.setContext("上海分拨中心/下车扫描");item.setFtime("2012-08-27 23:22:42");item.setTime("2012-08-27 23:22:42");req.getLastResult().getData().add(item);return JacksonHelper.toJSON(req);}public static void main(String[] args) {String param = "{\"status\":\"polling\",\"billstatus\":\"sending\",\"message\":\"到达目的城市\",\"lastResult\":{\"message\":\"ok\",\"nu\":\"97496602871\",\"ischeck\":\"0\",\"com\":\"jd\",\"status\":\"200\",\"data\":[{\"time\":\"2019-06-11 09:46:59\",\"context\":\"货物已分配,等待配送\",\"ftime\":\"2019-06-11 09:46:59\",\"areaCode\":null,\"areaName\":null,\"status\":\"在途\"},{\"time\":\"2019-06-11 09:46:58\",\"context\":\"货物已分配,等待配送\",\"ftime\":\"2019-06-11 09:46:58\",\"areaCode\":null,\"areaName\":null,\"status\":\"在途\"},{\"time\":\"2019-06-11 09:44:43\",\"context\":\"货物已分配,等待配送\",\"ftime\":\"2019-06-11 09:44:43\",\"areaCode\":null,\"areaName\":null,\"status\":\"在途\"},{\"time\":\"2019-06-11 09:44:42\",\"context\":\"货物已分配,等待配送\",\"ftime\":\"2019-06-11 09:44:42\",\"areaCode\":null,\"areaName\":null,\"status\":\"在途\"},{\"time\":\"2019-06-11 07:30:44\",\"context\":\"货物已分配,等待配送\",\"ftime\":\"2019-06-11 07:30:44\",\"areaCode\":null,\"areaName\":null,\"status\":\"在途\"},{\"time\":\"2019-06-11 07:30:43\",\"context\":\"货物已到达【上海罗店营业部】\",\"ftime\":\"2019-06-11 07:30:43\",\"areaCode\":\"CN311313101000\",\"areaName\":\"上海,宝山区,宝山区,罗店镇\",\"status\":\"在途\"},{\"time\":\"2019-06-11 05:10:44\",\"context\":\"货物已完成分拣,离开【昆山金阳分拣中心】\",\"ftime\":\"2019-06-11 05:10:44\",\"areaCode\":\"CN320583000000\",\"areaName\":\"江苏,苏州市,昆山市\",\"status\":\"在途\"},{\"time\":\"2019-06-10 21:38:25\",\"context\":\"货物已到达【昆山金阳分拣中心】\",\"ftime\":\"2019-06-10 21:38:25\",\"areaCode\":\"CN320583000000\",\"areaName\":\"江苏,苏州市,昆山市\",\"status\":\"在途\"},{\"time\":\"2019-06-10 21:38:08\",\"context\":\"货物已到达【昆山金阳分拣中心】\",\"ftime\":\"2019-06-10 21:38:08\",\"areaCode\":\"CN320583000000\",\"areaName\":\"江苏,苏州市,昆山市\",\"status\":\"在途\"},{\"time\":\"2019-06-10 19:09:24\",\"context\":\"货物已完成分拣,离开【昆山千灯亚一分拣中心】\",\"ftime\":\"2019-06-10 19:09:24\",\"areaCode\":\"CN320583108000\",\"areaName\":\"江苏,苏州市,昆山市,千灯镇\",\"status\":\"在途\"},{\"time\":\"2019-06-10 19:08:24\",\"context\":\"货物已交付京东物流\",\"ftime\":\"2019-06-10 19:08:24\",\"areaCode\":null,\"areaName\":null,\"status\":\"在途\"},{\"time\":\"2019-06-10 19:08:24\",\"context\":\"货物已到达【昆山千灯亚一分拣中心】\",\"ftime\":\"2019-06-10 19:08:24\",\"areaCode\":\"CN320583108000\",\"areaName\":\"江苏,苏州市,昆山市,千灯镇\",\"status\":\"在途\"}],\"state\":\"0\",\"condition\":\"F00\"}}";JSONObject parseObject = JSONObject.parseObject(param);System.out.println(parseObject.get("lastResult"));}
}
Service层:
package com.hhz.service;import java.util.List;
import java.util.Map;import com.hhz.basic.util.common.JsonReturn;
import com.hhz.entity.sms.WlOrder;public interface WlOrderMgr {/*** 保存物流信息* * @param wlOrder*/public JsonReturn saveWlOrder(WlOrder wlOrder) ;/*** 删除原来的推送信息* * @param orderId*/public JsonReturn delWlOrdersByOrderId(Integer orderId);/*** 推送新的物流信息* * @param ssl* @param param* @return * @throws Exception */public void addWLOrders(String param);public List
Service实现类:
package com.hhz.service.impl;import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.annotation.Resource;import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.openservices.ons.api.Producer;
import com.hhz.basic.dao.DaoSupport;
import com.hhz.basic.util.common.JacksonHelper;
import com.hhz.basic.util.common.JsonReturn;
import com.hhz.basic.util.common.ProducerDelayHelper;
import com.hhz.basic.util.common.PropertiesHelper;
import com.hhz.entity.shop.GoodsOrder;
import com.hhz.entity.sms.NoticeRequest;
import com.hhz.entity.sms.Result;
import com.hhz.entity.sms.ResultItem;
import com.hhz.entity.sms.SubscriptionLogistics;
import com.hhz.entity.sms.WlOrder;
import com.hhz.service.OpenOrderService;
import com.hhz.service.WlOrderMgr;@Service("wlOrderMgrImpl")
public class WlOrderMgrImpl implements WlOrderMgr {@Resource(name = "daoSupport")private DaoSupport dao;@Autowiredprivate OpenOrderService openOrderService;// @Autowired
// private Producer producer;/*** 保存物流信息* * @param wlOrder*/public JsonReturn saveWlOrder(WlOrder wlOrder) {Integer save = (Integer)dao.save("WlorderMapper.saveWlOrder", wlOrder);if(save !=1){return new JsonReturn(JsonReturn.CODE_ERROR,"添加失败");}return new JsonReturn(JsonReturn.CODE_SUCCESS,"添加成功");}/*** 删除原来的推送信息* * @param orderId*/ public JsonReturn delWlOrdersByOrderId(Integer orderId) {Map map = new HashMap();map.put("orderId", orderId);Integer delete = (Integer)dao.delete("WlorderMapper.delWlOrdersByOrderId", map);if(delete !=1){return new JsonReturn(JsonReturn.CODE_ERROR,"添加失败");}return new JsonReturn(JsonReturn.CODE_SUCCESS,"添加成功");}/*** 推送新的物流信息* * @param ssl* @param param* @return * @throws Exception */public synchronized void addWLOrders(String param){JSONObject parseObject = JSONObject.parseObject(param);JSONObject resultParam = parseObject.getJSONObject("lastResult");ArrayList list = new ArrayList();JSONArray jsonArray = resultParam.getJSONArray("data");Result result = new Result();result.setNu(resultParam.getString("nu"));result.setCom(resultParam.getString("com")); result.setMessage(resultParam.getString("message"));result.setState(resultParam.getString("state"));result.setStatus(resultParam.getString("status"));result.setCondition(resultParam.getString("condition"));for(int i=0;i map = new HashMap();map.put("deliveryNo", result.getNu());List
mybatis.xml文件
wl_id, order_id, order_no, logistics_id, logistics_info, pass_id, pass_name, ctime, memo, logistics_time, state, wl_state insert into t_wl_orderwl_id, order_id, order_no, logistics_id, logistics_info, pass_id, pass_name, ctime, memo, logistics_time, state, wl_state, #{wlId,jdbcType=BIGINT}, #{orderId,jdbcType=BIGINT}, #{orderNo,jdbcType=VARCHAR}, #{logisticsId,jdbcType=BIGINT}, #{logisticsInfo,jdbcType=VARCHAR}, #{passId,jdbcType=BIGINT}, #{passName,jdbcType=VARCHAR}, #{ctime,jdbcType=BIGINT}, #{memo,jdbcType=VARCHAR}, #{logisticsTime,jdbcType=VARCHAR}, #{state,jdbcType=SMALLINT}, #{wlState,jdbcType=SMALLINT}, delete from t_wl_orderwhere order_id = #{orderId}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
