美文网首页
订单发货物流信息

订单发货物流信息

作者: 小别墅是毛坯 | 来源:发表于2020-01-09 14:08 被阅读0次

    订单发货物流信息

    
        //校验订单是否存在
    
        Example goodsOrderExample = new Example(GoodsOrder.class);
    
        goodsOrderExample.createCriteria().andEqualTo("id", orderId)
    
                .andEqualTo("orderStatus", GoodsOrderStatusEnum.waitDelivery.getCode())  // waitDelivery(0,"待发货"),
    
                .andEqualTo("deleteFlag", DeleteFlagEnum.NotDeleted.getCode());        //未删除        条件
    
        GoodsOrder goodsOrder = goodsOrderMapper.selectOneByExample(goodsOrderExample);
    
    
    
        AssertUtil.notNull(goodsOrder, ExceptionEnum.GoodsOrderNoExists); 
    
                              // GoodsOrderNoExists(3005, "订单不存在,请刷新重试!"),
    
        GoodsDelivery goodsDelivery = getGoodsDelivery(orderId);
    
    
    
        logsService.addLogs(adminId,ip,"处理"+goodsOrder.getOrderNo()+"订单发货");//日志
    
        GoodsOrderDelivery goodsOrderDelivery = new GoodsOrderDelivery();
    
          AssertUtil.notNull(goodsDelivery, ExceptionEnum.NeedSetExpress);
    
                                        //      NeedSetExpress(3012, "请先设置快递发货信息!"),
    
            //更新发货信息(物流即时查询,订阅)
    
            String expressCode = deliveryParam.getExpressCode();
    
            String expressName = deliveryParam.getExpressName();
    
            String expressNo = deliveryParam.getExpressNo();
    
            goodsOrderDelivery.setExpressName(expressName);
    
            goodsOrderDelivery.setExpressNo(expressNo);
    
            goodsOrderDelivery.setExpressCode(expressCode);
    
            String logisticsInfo = ExpressUtil.realtime(expressCode, expressNo);
    
            Map<String, Object> logisticsInfoMap = JsonUtil.getInstance().toJsonObj(logisticsInfo, Map.class);
    
            //物流状态
    
            int status = 0;
    
            Object statusObj = logisticsInfoMap.get("State");
    
            if (statusObj != null) {
    
                status = Integer.parseInt(String.valueOf(statusObj));
    
            }
    
            List<ExpressDetailDto> expressDetailList = com.google.common.collect.Lists.newArrayList();
    
            //物流轨迹
    
            Object trace = logisticsInfoMap.get("Traces");
    
            if (trace != null) {
    
                System.out.println(trace);
    
                System.out.println(JsonUtil.getInstance().toJsonString(trace));
    
                List<LogisticsTraceBo> data = (List<LogisticsTraceBo>) JsonUtil.getInstance().toJsonObjList(JsonUtil.getInstance().toJsonString(trace), LogisticsTraceBo.class);
    
                data.forEach(obj -> {
    
                    ExpressDetailDto expressDetailDto = new ExpressDetailDto();
    
                    expressDetailDto.setMsg(obj.getAcceptStation());
    
                    expressDetailDto.setTime(obj.getAcceptTime());
    
                    expressDetailList.add(expressDetailDto);
    
                });
    
            }
    
            ExpressDto expressDto = new ExpressDto();
    
            expressDto.setTraces(expressDetailList);
    
            expressDto.setStatus(status);
    
            goodsOrderDelivery.setLogisticsInfo(JsonUtil.getInstance().toJsonString(expressDto));
    
        goodsOrderDelivery.setDeliveryTime(new Date());
    
        Example example = new Example(GoodsOrderDelivery.class);
    
        example.createCriteria().andEqualTo("orderId", orderId)
    
                .andEqualTo("deleteFlag", DeleteFlagEnum.NotDeleted.getCode());
    
        goodsOrderDeliveryMapper.updateByExampleSelective(goodsOrderDelivery, example);
    
        //更新订单状态为已发货
    
        GoodsOrder order = new GoodsOrder();
    
        order.setOrderStatus(GoodsOrderStatusEnum.waitReceipt.getCode());
    
        Example orderExample = new Example(GoodsOrder.class);
    
        orderExample.createCriteria().andEqualTo("orderStatus",GoodsOrderStatusEnum.waitDelivery.getCode())
    
                .andEqualTo("deleteFlag", DeleteFlagEnum.NotDeleted.getCode());
    
        goodsOrderMapper.updateByExampleSelective(order,orderExample);
    
    ***//  waitReceipt(1,"待收货"),***
    
            String consigneeAreas = goodsOrderDelivery.getAreas();
    
            if (StringUtils.isNotBlank(consigneeAreas)) {
    
                //收货区域信息 xx省xx市xx区
    
                String[] area = consigneeAreas.split(",");
    
                String deliveryInfo = goodsDelivery.getDeliveryInfo();
    
                DeliveryExpressDto deliveryExpress =
    
                        JsonUtil.getInstance().toJsonObj(deliveryInfo, DeliveryExpressDto.class);
    
                String[] mchArea = deliveryExpress.getArea().replaceAll(" ", "").split("/");
    
                AdminUser adminUser = adminUserMapper.selectByPrimaryKey(adminId);
    
                ExpressUtil.subscribe(
    
                        goodsOrderDelivery.getConsignee(),
    
                        goodsOrderDelivery.getPhone(),
    
                        area[0], area[1], area[2],
    
                        goodsOrderDelivery.getAddress(),
    
                        adminUser.getName(),
    
                        adminUser.getPhone(),
    
                        mchArea[0], mchArea[1], mchArea[2],
    
                        deliveryExpress.getAddress(), deliveryParam.getExpressCode(), deliveryParam.getExpressNo()
    
                );
    
            }
    
        }
    
    private GoodsDelivery getGoodsDelivery(Integer orderId) {
    
            GoodsDelivery goodsDelivery = new GoodsDelivery();
    
            goodsDelivery.setOrderId(orderId);
    
            goodsDelivery.setDeleteFlag(DeleteFlagEnum.NotDeleted.getCode());
    
            return goodsDeliveryMapper.selectOne(goodsDelivery);
    }
    
    /**
    
    *实体类
    
    * @author okayic
    
    * @date 2019/7/21
    
    */
    
    @Data
    
    @ApiModel("物流轨迹信息")
    
    public class ExpressDetailDto implements Serializable {
    
      @ApiModelProperty("轨迹信息")
    
      private String msg;
    
      @ApiModelProperty("轨迹改变时间")
    
      private String time;
    
    }
    
    
    /**
    
    * @author qcdl
    
    * @date 2019/7/22
    
    */
    
    @Data
    
    public class LogisticsTraceBo implements Serializable {
    
        @JsonProperty("AcceptStation")
    
        private String acceptStation;
    
        @JsonProperty("AcceptTime")
    
        private String acceptTime;
    
    }
    
    

    相关文章

      网友评论

          本文标题:订单发货物流信息

          本文链接:https://www.haomeiwen.com/subject/hkuyactx.html