订单发货物流信息
//校验订单是否存在
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;
}
网友评论