packagecom.suneee.scn.wms.web.rocketmq;importjava.io.UnsupportedEncodingException;importjava.util.List;importorg.apache.rocketmq.client.exception.MQBrokerException;importorg.apache.rocketmq.client.exception.MQClientException;importorg.apache.rocketmq.remoting.exception.RemotingException;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importcom.suneee.scn.message.model.MsgInfo;importcom.suneee.scn.message.send.MQProducer;importcom.suneee.scn.message.send.MQSend;importcom.suneee.scn.wms.consumer.impl.OrderConsumer;importcom.suneee.scn.wms.model.dbo.OrderDO;importcom.suneee.scn.wms.model.dbo.OrderDetailDO;importcom.suneee.scn.wms.model.dbo.ShiplabelDO;
@Controller("deliveryOrderSendController")public classDeliveryOrderSendController {private static final Logger log=LoggerFactory.getLogger(DeliveryOrderSendController.class);
@AutowiredprivateMQProducer producer;
@AutowiredprivateMQSend msgSend;
@AutowiredprivateOrderConsumer orderConsumer;//@Scheduled(cron="0/50 * * * * ? ")//间隔5秒执行
public voidtaskCycle(){
log.debug("【执行定时器开始............发货单!】");
MQSend mqs= newMQSend();
mqs.setProducer(producer.getProducer());
MsgInfo mi= newMsgInfo();
mi.setTopic("WmsTopic");
mi.setType("deliveryOrderConfirm");//-----------------------------------------------------------//1.先去sp_order_main查出ordernumber,storeordernumber,clientcode,status等属性
List sodlist =orderConsumer.findOrderNumber();//2.循环list
for(OrderDO sod:sodlist){
StringBuilder sb= newStringBuilder();
String ordernumber=sod.getOrdernumber();
String storeordernumber=sod.getStoreordernumber();int enterpriseid =sod.getEnterpriseid();//2.1 去shippinglabel查出barcode,carrier,weight
ShiplabelDO shiplabelDO =orderConsumer.queryShiplabelDOByOrderNumber(ordernumber);
String logisticsCode=shiplabelDO.getCarriercode();
String expressCode=shiplabelDO.getShiplabel();
Long weight=shiplabelDO.getWeight();
sb.append("{'request': {'deliveryOrder': {'enterpriseid': "+enterpriseid+",'deliveryOrderCode': ' "+storeordernumber+" ','deliveryOrderId': ' "+ordernumber+" ','warehouseCode': 'SunEee01','orderType': 'JYCK','status':'DELIVERED','outBizCode': ' "+ordernumber+" '},");
sb.append(" 'packages': {'package': {'logisticsCode': ' "+logisticsCode+" ','expressCode': ' "+expressCode+" ','weight': ' "+weight+" '}},");
sb.append(" 'orderLines': {'orderLine': [ ");//2.2 去orderdetail查出itemnumber,qty
List sendlist =orderConsumer.selectDeliveryOrderSendMessage(ordernumber);for(OrderDetailDO send :sendlist){
Long actualQty=send.getQty();
String itemCode=send.getItemnumber();
String uom=send.getUom();
sb.append(" {'itemCode': ' "+itemCode+" ','actualQty': '"+actualQty+" ','unit':'"+uom+"'},");
}
sb.deleteCharAt(sb.length()-1);
sb.append("]}}}");
mi.setData(sb.toString());try{
mqs.sendMsg(mi);
log.debug("【单号为"+ordernumber+"的发货单确认接口发送成功!---发送的JSON内容为---"+sb+"】");
orderConsumer.changeOrderStatusByOrderNumber(ordernumber,enterpriseid);
log.debug("【单号为"+ordernumber+"的发货单在sp_order_main表的状态更改成功!");
}catch (UnsupportedEncodingException |MQClientException| RemotingException | MQBrokerException |InterruptedException e) {
e.printStackTrace();
}
}//-----------------------------------------------------------
}
}