Novak Djokovic continued his bid for a fifth Shanghai crown with a hard-fought win against Yannick Hanfmann.